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

时间:2018-05-10 13:39:28

标签: java rabbitmq spring-integration spring-amqp spring-cloud-stream

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

  • Spring Cloud Stream为每台服务器提供1个绑定器。
  • MQ服务器配置了相同的交换和持久队列,但队列没有HA策略。

问题是:

  1. 这样做的最佳设计是什么?最好是通过改变高级Cloud Stream配置,而不是深入到Spring AMQP。
  2. 如何挂钩异步发布,结果如何?优选地,不使其同步。覆盖一些bean?
  3. RabbitMQ HA能否以任何方式提供帮助?据我所知,整个持久队列只存在于单个节点上以保持消息的顺序(实际上我不需要命令)。因此,如果我配置HA并且具有持久HA队列的节点失败/停止,处理和发布将崩溃吗?

1 个答案:

答案 0 :(得分:1)

  1. 请参阅启动文档: spring.rabbitmq.addresses= # Comma-separated list of addresses to which the client should connect.连接工厂将自动进行故障转移。

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

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