RabbitMQ HA部署以避免消息丢失

RabbitMQ HA部署以避免消息丢失,rabbitmq,high-availability,spring-amqp,Rabbitmq,High Availability,Spring Amqp,我使用以下策略在2个节点上设置了一个3节点RabbitMQ群集,其中包含消息镜像: ha-mode: exactly ha-params: 2 ha-sync-mode: automatic 我正在使用SpringBoot和SpringAMQP进行一些性能测试。基本上,我让Apache JMeter向发布消息的控制器发送HTTP请求: @RequestMapping(value = "/webhook", method = RequestMethod.POST) public void web

我使用以下策略在2个节点上设置了一个3节点RabbitMQ群集,其中包含消息镜像:

ha-mode: exactly
ha-params: 2
ha-sync-mode: automatic
我正在使用SpringBoot和SpringAMQP进行一些性能测试。基本上,我让Apache JMeter向发布消息的控制器发送HTTP请求:

@RequestMapping(value = "/webhook", method = RequestMethod.POST)
public void webhook(@RequestBody(required = true) String webhookBody, HttpServletRequest request) {
        rabbitTemplate.convertAndSend("exchange", "key", "message");
}
使用以下配置:

spring:    
  rabbitmq:
    addresses: rabbitmq-1:5672,rabbitmq-2:5672,rabbitmq-3:5672
我已将脚本配置为每100ms执行一次请求,并在运行时尝试关闭一个节点。结果是
autorecoverconnectionnotcurrentlypenexception
和至少8-9个失败的请求。
在这种情况下,您建议采用哪些其他设置来完全避免响应失败?使用像HAProxy/Nginx这样的第4层代理是否更好?

在基础rabbit连接工厂上重置
自动恢复启用的
(在1.7.0中默认为真);在1.7.1中,默认情况下再次为false

rabbitmplate
将比客户端的自动恢复机制更快地恢复连接


<>但是,为了避免消息丢失,您可能需要考虑将<代码> RejyType 添加到<代码> RabbTease> />代码>

谢谢您的建议@ Gary Russel,升级到最新的Spring Boo1.5.2,我在生产者端没有丢失的消息。