rabbitmq - RabbitMQ-队列中未确认的消息计数随着侦听器的启动和未确认的消息由侦听器处理而增加
问题描述
我尝试使用配置了预取计数> 1的自定义容器工厂的专用rabbitMQ侦听器来处理死信队列中的消息。
我可以使用死信队列中的消息,但是消息在侦听器启动时从准备就绪移动到未确认。
侦听器/消费者能够处理这些消息。但是在应用程序重新启动时,那些未确认的消息正在准备就绪
假设我在死信队列中有 100 条消息,并且我定义了一个预取计数为 10 的侦听器。
在侦听器启动后,消费者能够处理这 10 条消息,但在死信队列中包含 90 条准备就绪和 10 条未确认消息。随着处理的继续,未确认消息增加了 10
应用程序重新启动后,那些未确认的消息再次回到死信队列中的就绪状态,并再次可供侦听器使用
请指导我
Config:
@Bean
public SimpleRabbitListenercontainerFactory prefetchFactory(connectionFactory){
SimpleRabbitListenercontainerFactory factory=new SimpleRabbitListenercontainerFactory ();
factory.setConnectionFactory(connectionFactory);
factory.setPrefetchCount(10);
factory.setTimeOut(10000);
}
这里
factory.setAcknowledgeMode(AcknowledgeMode.AUTO)
不适用于消费者
Listener:
@RabbitListener(queues="dlq.queue",containerFactory="prefetchFactory")
public class Consumer{
@Rabbithandler
public void onReceive(Message m){
Sysout.println("Message received:" +m.toString());
}
}
@GarryRussell
解决方案
推荐阅读
- python - Python Altair 渲染错误 - Javascript 错误:递归过多
- arrays - 获得嵌套在 laravel 中的 json
- python - 使用 OpenVPN (Windows) 时,Paho MQTT 客户端因特殊负载(正斜杠)失败
- sql-server - 与“Where 子句”关联的 CTE 查询未在 Where 子句中的评估条件之前执行
- python - Openpyxl 不会附加到行,如果它们已经被写入
- firebase - Flutter 从 Firebase 身份验证服务获取未知错误
- cassandra - 如何防止未经授权的节点加入 Cassandra 集群?
- amazon-s3 - IAM 政策未授予访问点的访问权限
- reactjs - React Router v6 和 React.lazy 无法正常工作,引发错误
- c# - 在 C#/.NET 进程中重定向标准错误时缺少输出