rabbitmq链接超时_RabbitMQ在处理长时间运行的任务和超时设置产生错误时关闭连接...

我的系统也遇到了同样的问题,你也看到了,在很长时间的任务中连接中断。在

如果您的网络设置使得空闲的TCP/IP连接被强制断开,心跳信号可能会帮助您保持连接的活动状态。如果不是这样的话,改变心跳也无济于事。在

更改连接超时一点帮助也没有。此设置仅在最初创建连接时使用。在I am using a RabbitMQ producer to send long running tasks (30 mins+) to a consumer. The problem is that the consumer is still working on a task when the connection to the server is closed and the unacknowledged task is requeued.

这有两个原因,这两个原因你都已经遇到过了:即使在最好的情况下,连接也会随机下降

由于重新排队的消息而重新启动进程可能会导致问题

在部署了RabbitMQ代码,任务范围从不到1秒到几个小时不等,我发现立即确认消息并用状态消息更新系统对于非常长的任务最有效,比如这样。在

你需要有一个记录系统(可能有一个数据库)来跟踪给定作业的状态。在

当消费者接收到消息并开始处理时,应立即确认该消息,并向记录系统发送“已启动”状态消息。在

当过程完成时,发送另一条消息说它已经完成。在

这不能解决掉连接的问题,但无论如何也不能百分之百地解决这个问题。相反,它将防止在断开连接时发生消息重新排队问题。在

不过,这个解决方案确实引入了另一个问题:当长时间运行的进程崩溃时,如何恢复工作?在

基本的答案是使用作业的记录系统(数据库)状态来告诉您需要重新开始工作。当应用程序启动时,检查数据库以查看是否有未完成的工作。如果有,以适当的方式恢复或重新开始工作。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值