【问题标题】:Messaging systems reliability消息系统可靠性
【发布时间】:2018-10-06 11:57:08
【问题描述】:

‌我了解每个消息传递平台(rabbitmq,activemq)都提供了一些机制来保证服务器(rabbitmq)和消费者之间的消息传递,所以如果消费者宕机,消息仍然会在队列中并重新传递。但是,如果消息传递平台关闭并且客户端(消息的生产者)无法将消息传递到平台(Rabbitmq),会发生什么?在这种情况下,需要一个重试方法来重新传递消息,但我不确定我是否必须自己实现它,或者客户端库有这个选项,它是否在连接/通道创建中声明为参数?它是特定于平台的吗?另外,像 AMQP 这样的协议是否指定了这一点?我也听说过 Spring Retry 作为一个选项。

【问题讨论】:

  • 你的问题有点不清楚。标题表明您是在询问消息传递“系统”(我假设它的意思是“经纪人”),但实际上您是在询问客户。
  • 没错。我在问客户。
  • 我建议你澄清你的问题——尤其是标题。

标签: rabbitmq jms activemq amqp spring-jms


【解决方案1】:

spring-retry RetryTemplate 可以直接连接到 Spring AMQP 的 RabbitTemplate

Kafka 在 Producer 中内置了重试功能(请参阅 retries 属性)。

对于 JMS,您可以将 JmsTemplate 包装到 RetryTemplate.execute() 方法中。

重试策略、退避等都是可配置的。

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多