09activeMQ持久化存储

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

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

在这里插入图片描述

kahaDB默认的存储方式

在配置文件activemq.xml中有如下配置段,默认的是kahaDB存储。存储路径是activemqdata目录下的kahadb
在这里插入图片描述

<!--
    Configure message persistence for the broker. The default persistence
    mechanism is the KahaDB store (identified by the kahaDB tag).
    For more information, see:

    http://activemq.apache.org/persistence.html
-->
<persistenceAdapter>
    <kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>

AMQ基于文件的存储方式

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

JDBC基于数据库的存储

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

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

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

  2. 添加jar包到lib目录下

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

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

<persistenceAdapter>
   <!-- 
   <kahaDB directory="${activemq.data}/kahadb"/>
   -->
	<jdbcPersistenceAdapter dataSource="#mysqlDataSource" createTablesOnStartup="true" />
</persistenceAdapter>


<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/shiro" />
    <property name="username" value="root"/>
    <property name="password" value="12345678"/>
</bean>

启动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版本之后提供的一种持久化策略,通常用于集群配置。

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值