Spring Cloud Stream:如果当前连接抛出异常,则重新发布到其他 amqp 连接

Spring Cloud Stream: Republish to other amqp connection if current connection throws exception

我有 2 个相同的 RabbitMQ 服务器,我想将事件发布到其中一个(只处理一次),在发布失败的情况下转移到另一个。

问题是:

  1. 最好的设计是什么?最好通过更改高级 Cloud Stream 配置,而不是深入研究 Spring AMQP。
  2. 如何挂钩异步发布及其结果?最好不要让它同步。覆盖一些 bean?
  3. RabbitMQ HA 有什么帮助吗?据我了解,整个持久队列仅存在于单个节点上以保留消息的顺序(实际上我不需要顺序)。所以如果我配置 HA 和具有持久 HA 队列的节点 fails/stops,处理和发布会崩溃吗?
  1. 查看引导文档: spring.rabbitmq.addresses= # Comma-separated list of addresses to which the client should connect. 连接工厂将自动进行故障转移。

  2. 如果您设置了生产者errorChannelEnabled,您将在错误通道中获得返回的消息;这需要为 returns 配置的连接工厂。目前没有获得异步肯定acks的机制,除非你直接使用Spring AMQP来发布消息。

  3. 使用 HA 时,将为故障节点托管的队列选择一个新的主节点。当队列托管在一个节点上时,它会被复制到其他节点。