ActiveMQ in Action-5 ActiveMQ message storage- 高飞网

5 ActiveMQ message storage

2016-06-02 14:38:42.0

ActiveMQ消息存储

本章内容包括

  1. ActiveMQ中的队列(queue)和话题(topic)消息是如何存储的
  2. ActiveMQ提供的4种类型的消息存储
  3. ActiveMQ如何为消费者缓存消息
  4. 如何使用订阅恢复策略去控制消息缓存


    JMS规范支持两种类型的消息传递:持久化和非持久化。消息持久化传输时消息必须被记录到稳定的存储中。而非持久化消息,JMS提供商必须提供最好的传输性能,但不必记录到稳定存储中。

    ActiveMQ支持这两种消息传输方式,也可以通过配置去支持消息恢复,介于两者之间(持久化和非持久化)还有一种消息状态是缓存到内存当中。ActiveMQ支持插件式存储并且提供了存储选项以支持内存、文件存储和关系型数据库存储。如果你想让消息在传输到服务端之后,即便当消息发送时消费者没有在运行,对消费者仍然永久可用,就可以使用持久化消息。消息一旦被消费者消费并且识别,就会从服务端消息存储中删除掉。

    非持久化消息通常用于发送通知或实时数据。当性能要求很挑剔,并且不要求消息传递担保时,即可以使用非持久化消息。

    本章首先会解释,对于queue和topic为什么消息存储是不同的。然后我们将查看所有的四种不同的消息存储;以及使用它的原因与时机。最后我们看下,如何配置ActiveMQ以临时缓存消费者检索的消息,ActiveMQ缓存消息的灵活性是非常独特的,允许更好地控制你的应用检索消息。为了打好基础,我们先看下JMS规范中的消息存储。