代码之家  ›  专栏  ›  技术社区  ›  Roman Lebedev

Spring云流:如果当前连接引发异常,则重新发布到其他amqp连接[关闭]

  •  0
  • Roman Lebedev  · 技术社区  · 7 年前

    我有两个完全相同的RabbitMQ服务器,我想将事件发布到其中一个服务器(只处理一次),在发布失败时故障切换到另一个服务器。

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

    问题是:

    1. 实现这一点的最佳设计是什么?最好是通过更改高级云流配置,而不是跳入Spring AMQP。
    2. 如何连接到异步发布及其结果?最好不要使其同步。覆盖一些bean?
    3. RabbitMQ HA有什么帮助吗?据我所知,整个持久队列只存在于单个节点上,以保持消息的顺序(实际上我不需要顺序)。因此,如果配置HA,并且具有持久HA队列的节点失败/停止,处理和发布将崩溃?
    1 回复  |  直到 7 年前
        1
  •  1
  •   Gary Russell    7 年前
    1. 请参阅引导文档: spring.rabbitmq.addresses= # Comma-separated list of addresses to which the client should connect. 连接工厂将自动故障切换。

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

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