JMS 自动持久化和自动恢复

JMS auto persistance and auto recovery

我正在尝试解决下一个任务:

  1. 我有 1 个输出队列和 1 个输入队列和数据库。
  2. 如果输出队列不可用,我需要将所有输入消息持久化到数据库。
  3. 只要输出队列可用,输入队列(或代理)就应该开始从数据库发送所有消息,同时从数据库中删除这些消息。一切都应该自动完成,而不是手动完成。

是否有消息代理(ActiveMQ、RabbitMQ)有"out of the box"解决方案?

我认为没有任何消息传递提供商提供您所要求的开箱即用支持。您需要编写一个应用程序来完成这项工作。该应用程序可以非常简单,它使用全局事务来协调将消息放入队列和从数据库中删除消息。

如果您的业务逻辑允许,我建议您看看在放入输入队列时使用持久消息的可能性。这样您就可以避免在输出队列不可用时将消息持久保存到数据库中。当输出队列可用时,您的应用程序可以从输入队列中提取消息,处理并放入输出队列。