一、消息的存储方式

ActiveMQ支持JMS规范中的持久化消息与非持久化消息

  • 持久化消息通常用于不管是否消费者在线,它们都会保证消息会被消费者消费。当消息被确认消费后,会从存储中删除

  • 非持久化消息通常用于发送通知以及实时数据,通常要求性能优先,消息可靠性并不是必须的情况

  • MQ支持可插拔式的消息存储,如:内存、文件和关系数据库等方式

Queue消息模型在ActiveMQ的存储

  采用存储采用先进先出(FIFO),一个消息只能被一个消费者消费,当消息被确认消费之后才会被删除。

Topic消息模型(针对持久订阅)
  每个订阅者获取的消息实际是消息的一个副本,只有一个消息副本会被存储,MQ提供了一个指针来指向消息存储并且分发消息副本到订阅者,消息直到所有的持久化订阅者都被接收才能被删除。

持久化存储方式:

  1. KahaDB消息存储

  2. AMQ消息存储

  3. JDBC消息存储

  4. 内存消息存储

二、KahaDB存储方式

  KahaDB是从ActiveMQ 5.4开始默认的持久化插件。KahaDb恢复时间远远小于其前身AMQ并且使用更少的数据文件,所以可以完全代替AMQ,kahaDB的持久化机制同样是基于日志文件,索引和缓存。

(一)、KahaDB主要特性:

  1. 日志形式存储消息;

  2. 消息索引以B-Tree结构存储,可以快速更新;

  3. 完全支持JMS事务;

  4. 支持多种恢复机制;

(二)、适用场景:

  1. 高吞吐量的应用程序

  2. 存储大数据量的消息

(三)、配置方式 conf/activemq.xml:

        		

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式