【发布时间】:2021-10-16 04:10:47
【问题描述】:
我需要实现以下工作流程:
- 每 N 毫秒从 JMS 队列中获取所有可用消息,但不超过 K 个项目
- 做一些处理
- 处理完成后确认所有这些
我对如何使用 JMS 正确实施步骤 1 很感兴趣。
我尝试的是:
- 创建
BlockingQueue大小 K - 在我的 JMS
MessageListener的onMessage方法中,将消息放入BlockingQueue。 - 每 N 毫秒耗尽
BlockingQueue,处理消息并确认它们。
一目了然,但问题是,如果在批处理过程中在onMessage 中获取了一些消息,那么一旦批处理完成,它也会在BlockingQueue 中被确认,并且没有尚未处理 (reference)。因此,如果我的应用出现故障,则根本不会处理消息。
实施步骤 #1 的更好方法是什么?是 JMS API 还是一些标准方法?
【问题讨论】:
标签: java jms message-queue messaging