如何解决使用RabbitMQ和Camel一一消费消息
我有一个 RabbitMQ 代理和一个使用消息的 Camel Java 应用程序。消费者在 ca 中处理一条消息。 1秒。我产生了 10'000 条消息;这几乎是瞬间的。 RabbitMQ 控制台立即报告队列中不再包含该 ca。 7,000 条消息。这对我来说是个问题,因为如果消费者失败,大约有 3'000 条消息会丢失。
我尝试了几个选项:
- 流缓存:
camelContext.setStreamCaching(false);
// 或true
- 节流:
from(queue).throttle(1)
- 预取:
from(rabbitmq:exchange&queue=q&prefetchEnabled=true&prefetchCount=1&prefetchGlobal=false&prefetchSize=0
一切都无济于事。我从未观察到队列中的消息数量有规律地减少(10'000,然后是 9'999、9'998 等)。恰恰相反:我总是可以看到消息以大块(通常是 3000 条消息)的形式从队列中出来,尽管消费者实际上处理它们的速度很慢。
如何一条一条消费消息?
解决方法
在事务中运行此路由。这样,失败的消费者最终会将消息回滚到队列中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。