社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Nek

Nek 最近创建的主题
Nek 最近回复了
6 年前
回复了 Nek 创建的主题 » symfony messenger/rabbitmq中的使用者错误处理

您需要做的是告诉rabbitmq,消息被拒绝而不是被确认。默认情况下,通讯器将在 AmqpReceiver . 如您所见,如果抛出实现 RejectMessageExceptionInterface 在处理程序内部,消息将自动被拒绝。

您还可以使用定制中间件“模拟”这种行为。我在一个小的演示应用程序中创建了类似的东西。该机制由一个中间件组成,该中间件将(序列化)原始消息包装在新的 RetryMessage 并通过自定义消息总线将其发送到另一个队列,用作死信交换。然后,该消息的处理程序将解包retrymessage(获取原始消息并对其进行反序列化),并通过默认总线进行传输:

见:

这是一个基本设置,它拒绝消息并允许您立即再次使用它!!)。您可能希望在延迟消耗以改进这一点时添加额外信息,例如时间戳的标题。为此,您应该考虑编写自己的接收器、中间件和/或处理程序。