相关疑难解决方法(0)

RabbitMQ:消息仍为"未确认"

我的Java应用程序向RabbitMQ交换发送消息,然后交换重定向消息到绑定队列.我在RabbitMQ中使用Springframework AMQP java插件.

问题:消息进入队列,但它保持"未确认"状态,它永远不会变为"就绪".

可能是什么原因?

java message-queue amqp rabbitmq

17
推荐指数
2
解决办法
3万
查看次数

没有连接的AMQP/RabbitMQ通道何时死亡?

我有一个简单的RabbitMQ测试程序随机排队消息,另一个读取它们,都使用Spring-AMQP.如果消费者死亡(例如,在没有机会关闭其连接或通道的情况下终止进程),则任何未确认的消息似乎永远不会被确认.

我已经看到了许多引用(例如这个问题),它说当通道在没有连接时死亡,并且将重新传送剩余的未包装的消息.这不是我看到的行为 - 相反,我得到了一个越​​来越多的标记为IDLE的频道列表,以及越来越多的标记正在运行但没有活动的连接列表.

一旦进程被杀死,是否需要一些配置才能注意到连接已经死亡?

编辑: 我在VirtualBox VM中运行rabbitmq服务器,显然无法通过NAT正确管理死入站连接.这对于直接在物理主机上运行的mq服务器来说效果很好.

java message-queue amqp rabbitmq spring-amqp

9
推荐指数
1
解决办法
5581
查看次数

芹菜中的预取任务是否被承认?

我有以下设置:

  • RabbitMQ经纪人+ Django
  • 芹菜与CELERYD_PREFETCH_MULTIPLIER = 32(我有很多小任务,因此从性能角度预取它们很有意义)
  • CELERY_ACKS_LATE = False(任务不是幂等的)

我在码头工人的容器中运行芹菜,所以当我重建码头工人时,芹菜工人没有优雅地关闭.这是可以的,如果没有确认任务,因为一旦工人再次在新的docker容器中,经纪人会将它们发回去,但在其他情况下,他们将会丢失.

在花管理面板中,预取任务已收到状态.

我仔细阅读了官方文档和相关问题,直觉上我觉得我的设置中的预取任务得到了认可.是这样吗?

django rabbitmq celery celery-task

5
推荐指数
1
解决办法
380
查看次数