Spring Cloud Stream:如果当前连接抛出异常,则重新发布到其他 amqp 连接
Spring Cloud Stream: Republish to other amqp connection if current connection throws exception
我有 2 个相同的 RabbitMQ 服务器,我想将事件发布到其中一个(只处理一次),在发布失败的情况下转移到另一个。
- Spring Cloud Stream 每个服务器有 1 个活页夹。
- MQ 服务器配置了相同的交换器和持久队列,但队列没有 HA 策略。
问题是:
- 最好的设计是什么?最好通过更改高级 Cloud Stream 配置,而不是深入研究 Spring AMQP。
- 如何挂钩异步发布及其结果?最好不要让它同步。覆盖一些 bean?
- RabbitMQ HA 有什么帮助吗?据我了解,整个持久队列仅存在于单个节点上以保留消息的顺序(实际上我不需要顺序)。所以如果我配置 HA 和具有持久 HA 队列的节点 fails/stops,处理和发布会崩溃吗?
查看引导文档:
spring.rabbitmq.addresses= # Comma-separated list of addresses to which the client should connect.
连接工厂将自动进行故障转移。
如果您设置了生产者errorChannelEnabled
,您将在错误通道中获得返回的消息;这需要为 returns 配置的连接工厂。目前没有获得异步肯定acks的机制,除非你直接使用Spring AMQP来发布消息。
使用 HA 时,将为故障节点托管的队列选择一个新的主节点。当队列托管在一个节点上时,它会被复制到其他节点。
我有 2 个相同的 RabbitMQ 服务器,我想将事件发布到其中一个(只处理一次),在发布失败的情况下转移到另一个。
- Spring Cloud Stream 每个服务器有 1 个活页夹。
- MQ 服务器配置了相同的交换器和持久队列,但队列没有 HA 策略。
问题是:
- 最好的设计是什么?最好通过更改高级 Cloud Stream 配置,而不是深入研究 Spring AMQP。
- 如何挂钩异步发布及其结果?最好不要让它同步。覆盖一些 bean?
- RabbitMQ HA 有什么帮助吗?据我了解,整个持久队列仅存在于单个节点上以保留消息的顺序(实际上我不需要顺序)。所以如果我配置 HA 和具有持久 HA 队列的节点 fails/stops,处理和发布会崩溃吗?
查看引导文档:
spring.rabbitmq.addresses= # Comma-separated list of addresses to which the client should connect.
连接工厂将自动进行故障转移。如果您设置了生产者
errorChannelEnabled
,您将在错误通道中获得返回的消息;这需要为 returns 配置的连接工厂。目前没有获得异步肯定acks的机制,除非你直接使用Spring AMQP来发布消息。使用 HA 时,将为故障节点托管的队列选择一个新的主节点。当队列托管在一个节点上时,它会被复制到其他节点。