当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ在第一个消息之后删除消息

欧阳成弘
2023-03-14

共有1个答案

解飞语
2023-03-14

最后,我想出了问题,但不清楚这是预期的行为,是celery bug还是RabbitMQ bug。

除了我们的应用程序任务之外,我还有一个自定义日志处理程序,用于使用RabbitMQ和Celery.send_task将日志发送到中心位置。该日志处理程序将消息发送到名为application.logger的exchange中,该exchange具有路由键,如application.logger.info、application.logger.warning等,并具有将某些日志级别路由到特定队列的绑定。这种交换、绑定和队列是直接在RabbitMQ中创建的,而不是在Celery路由中定义的。

当worker试图将消息发送到此exchange而消息不存在时,Celery将记录一个404 NOT_FOUND错误。在此之后,发送到使用相同连接的其他交换机的任务不会被传递。它们是由worker实例发送的,我们可以看到数据包到达,该连接的RabbitMQ管理屏幕甚至以KB/s的形式显示来自客户机的数据,但没有传递任何消息。

 类似资料:
  • 我有一个RabbitMQ队列用于生成文档。基本上,每个文档都有和(新建、处理、就绪),因此我使用主题交换和路由键,如。每次文档更改时,我都会将带有上一个文档描述的消息发送到exchange上,并且它工作得很好。 null

  • 我有以下兔子听者: 我需要将listener配置为在它处理一条消息后等待15分钟,然后再接收下一条消息。不需要在此方法中等待。我所需要的只是在处理完一条后不接收任何消息。可以通过来完成,但我不确定这是否是实现这一点的最佳方法。对于这种情况有没有rabbitmq的配置?

  • 这就是事情。 我正在使用PHP AMQP从Rabbitmq读取结果队列,以便处理发送的每封电子邮件上的重要信息。完成后,我需要将该消息删除或标记为已写入,以便下次读取队列时,不会得到已处理的消息。 由于Rabbitmq服务器每小时发送超过10.000封电子邮件,每次我读取队列以处理结果发送时,脚本至少可以运行5分钟,以便处理队列中的所有消息,因此在完成后,在这5分钟内会发送数百条新消息。这使得我无

  • 我希望对RabbitMQ中的队列有这样的约束: 编辑(澄清):将有许多消费者都试图从所有队列中获取工作,由于他们无法从一个队列中获取工作,该队列中处理的事件未被加密,所以有序处理将被维护。

  • 我希望能够在Rabbit中移动队列之间的消息(手动)。 例如: 我对rabbitmq和amqp还是个新手,但一直找不到关于如何做到这一点的文档(如果可能的话)。 多谢了。

  • 我希望通过RabbitMQ获得以下模式以“顺序”接收消息。我使用Node.js框架作为消费者。 假设队列中有3条消息,我需要这样的模式: 我的队列是持久的,需要ACK。我是不是缺了什么? 请救命!