【发布时间】:2021-07-28 11:49:53
【问题描述】:
我有一个 RabbitMQ 代理和一个使用消息的 Camel Java 应用程序。消费者在 ca 中处理一条消息。 1秒。我产生 10'000 条消息;这几乎是瞬间的。 RabbitMQ 控制台立即报告队列不包含更多内容。 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 等)。恰恰相反:我总是可以看到消息以大块(通常是 3'000 条消息)从队列中出来,尽管消费者实际上处理它们的速度很慢。
我怎样才能一一消费消息?
【问题讨论】:
-
我最终停止使用 Camel。我切换到 Spring RabbitMQ,它稍微冗长但容易多了!
标签: rabbitmq apache-camel throttling consumer