我使用 ActiveMQ classic 作为队列管理器。我的消息使用者(使用 Spring 的 @JmsListener)写入 MongoDB。如果 MongoDB 不可用,则会将消息发送到另一个队列,我们将其称为重新传递队列。
所以,想象一下 mongoDB 宕机几个小时后,它终于恢复了。现在从该重新传递队列读取消息的最佳方法是什么?
我在想是否有可能通过创建每天运行一次的批处理作业来做到这一点?如果是这样,有哪些选项可以用来创建这样的工作,或者是否有其他更好的选项可用。
JMS 没有“批处理”模式。一个 JMS 使用者一次只能接收一条消息。通常,提高消息吞吐量以处理大量消息的最佳方法是增加消费者的数量。使用 Spring
JmsListener
使用 concurrency
设置,这应该相当简单。
当然,您可以使用
cron
之类的东西来安排作业来处理这些消息,或者使用 Quartz Job Scheduler 之类的东西。
在 Stack Overflow 上给你提供“最好”的方法来处理你的情况确实是不可能的。未知的变量实在太多了。