为RabbitMQ ack消息设置长超时

 BELLICOSE牛仔 发布于 2023-01-07 20:57

我想知道这是否可行.我想从队列中提取任务,并且在将ack发送回RabbitMQ通知工作已完成之前,可能需要3秒或更长(可能)分钟的时间.工作由用户完成,因此这就是处理工作所需时间的原因.

我不想在弹出队列后立即确认消息,因为如果没有收到确认,我希望消息重新排队.任何人都可以给我任何有关如何解决我的问题的见解?

1 个回答
  • 有一个很长的超时要细,当然,你说你要交还如果出现错误,所以你要只ACK 完成.

    实现这一目标的最佳方式是IMO,即队列中有多个消费者(即多个线程/进程从同一队列中消耗).只要队列内容没有特定的排序约束(即如果队列包含代表涉及FK约束的Postgres数据的内容,则可能存在这种情况),这应该没问题.

    RabbitMQ网站上的这个教程提供了更多信息(Python链接,但应该有其他语言的类似教程):https://www.rabbitmq.com/tutorials/tutorial-two-python.html

    编辑以回应OP的评论:

    你的心跳是什么?如果您的工作人员在设定的时间段内未确认心跳,服务器将认为该连接已死亡.

    不确定您使用的是哪种语言,但对于Java,您可以使用该setRequestedHeartbeat方法指定心跳.

    实现工作者的方式,心跳仍然可以发送回RabbitMQ服务器至关重要.如果某些东西阻止客户端发送心跳,服务器将在时间间隔到期后终止连接.

    2023-01-07 21:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有