rabbitmq 集群 ha负载 Consumer raised exception, processing can restart if the connection factory

本文介绍如何正确配置HAProxy以支持RabbitMQ集群的负载均衡,并确保TCP长连接不被自动关闭,避免因此导致的Consumer异常问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

情况是酱紫滴

线上有一个rabbitmq 集群,一台磁盘模式的 两台内存模式的. 使用erlang 做cookie 做同步.haproxy做负载

在连接一会后 程序抛出异常 Consumer raised exception, processing can restart if the connection factory

原因是因为ha 在做负载的时候 设置玩tcp连接后 还需要把默认的 timeout server 和 timeout client 注释掉.

这样ha就不会自动的关闭mq的tcp 长连接了

华丽的分割线_____________________________________________________________________

global
        log 127.0.0.1   local3
        maxconn    65535                       #这里可以改大一些 增加扩容
        chroot          /usr/local/haproxy
        uid nobody
        gid nobody
        daemon
        nbproc 1
        pidfile /usr/local/haproxy/haproxy.pid
        #debug 
        #tune.ssl.default-dh-param 2048


defaults
         log    127.0.0.1       local3
         #mode   tcp
         option tcplog
         #option http-server-close
         option dontlognull
         option forwardfor
         option redispatch
         retries 2
         maxconn 3000                     #这里可以改大一些 增加扩容
        timeout connect 5000
        #timeout client  100000       将此行注释
        #timeout server  100000     将此行注释



listen  web_ha
        bind 0.0.0.0:9999
        mode http
        transparent
        stats refresh 30s
        stats   uri     /haproxy-stats
        stats hide-version
        stats realm Haproxy\statistics
        stats auth ********:*********




listen rabbitmq_cluster 0.0.0.0:5670
        mode tcp
        option tcplog
option tcpka                             #允许发送tcp 长连接
        log global
        balance roundrobin          
        #cookie rabbit insert indirect nocache
        #server rabbitmq-1 192.168.8.114:5672 weight 2 check inter 2000 rise 1 fall 5
        server rabbitmq-2 192.168.8.115:5672 check inter 5000
        server rabbitmq-3 192.168.8.116:5672 check inter 5000



______________________________________________________________________________




感谢 http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-January/024858.html

### 解决 RabbitMQ 消费者连接被拒绝 (AmqpConnectException, java.net.ConnectException: Connection refused) 的方法 当遇到 `org.springframework.amqp.AmqpConnectException` 和 `java.net.ConnectException: Connection refused` 错误时,这通常意味着应用程序尝试连接到 RabbitMQ 服务器失败。以下是可能的原因和解决方案: #### 配置错误 确认配置文件中的主机名、端口、用户名和密码是否正确设置。如果这些参数不匹配,则客户端无法成功建立与 RabbitMQ 服务的 TCP 连接[^1]。 #### 网络问题 检查网络状况,确保应用服务器能够访问 RabbitMQ 所在机器上的指定端口(默认为5672)。可以使用命令行工具如 telnet 或 nc 测试连通性。 #### RabbitMQ 未启动或崩溃 验证 RabbitMQ 是否正在运行并监听正确的地址/端口组合。可以通过查看操作系统的服务状态或者日志来判断其健康情况;另外也可以通过管理插件 Web UI 来监控集群节点的状态。 #### 资源不足或其他限制因素 有时由于系统资源耗尽(例如过多打开的文件描述符),可能会阻止新的套接字创建从而引发此异常。此外防火墙规则也可能阻挡外部请求到达目标端口号。因此要排查是否有足够的内存/CPU 可用以及安全策略允许必要的通信路径畅通无阻。 ```bash # 使用 Telnet 测试连接 telnet localhost 5672 ``` ```python import pika connection = pika.BlockingConnection( pika.ConnectionParameters(host='localhost')) channel = connection.channel() print("Connected to RabbitMQ") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值