09activeMQ持久化存储

持久化的目的是用来保证消息可靠性的方法。发送端的消息发送完毕之后即使接收者不是在线或者消息中心宕机重启之后仍然可以把消息发送到消费端。

activeMQ支持以下几种持久方式。

09activeMQ持久化存储_第1张图片

kahaDB默认的存储方式

在配置文件activemq.xml中有如下配置段,默认的是kahaDB存储。存储路径是activemqdata目录下的kahadb
09activeMQ持久化存储_第2张图片



    

AMQ基于文件的存储方式

AMQ存储方式特点就是:写入速度很快,容易恢复。默认大小是32M

JDBC基于数据库的存储

在数据量和性能要求不是特别高的场景下可以使用数据库存储。

  1. 配置持久化存储适配器

    指定使用jdbc适配器作为activemq的持久化存储适配器。创建使用的数据库bean

  2. 添加jar包到lib目录下

    • commons-dbcp
    • commons-pool
    • mysql-connector-java

    根据使用的版本号添加对应的jar


   
	




    
    
    
    

启动broker之后是否进行默认的数据库的表的创建,默认是false

启动之后查看数据库。
在这里插入图片描述

  • ACTIVEMQ_ACKS:存储持久订阅的信息
  • ACTIVEMQ_LOCK:锁表(用来做集群的时候,实现master选举的表)
  • ACTIVEMQ_MSGS:消息表

上面的jdbc方式,消息的发送及消费都需要操作数据库。当数据流量大的时候,整个的瓶颈就变成了数据库的瓶颈。因此基于jdbc的方式还有另一种方式。


JDBC Message store with activeMQ journal

该方式,当消费者消费较快时,对于消息不会入库,直接经过缓存。

  1. 引入了快速缓存机制
  2. 性能比jdbc
  3. 该方式不能应用于master/slave模式

Memory基于内存的存储

基于内存的存储

LevelDB

5.8版本之后提供的一种持久化策略,通常用于集群配置。

09activeMQ持久化存储_第3张图片

你可能感兴趣的:(09activeMQ持久化存储)