ActiveMQ的消息存储和持久化

MQ服务器down机了,消息不会丢失的机制。
1、AMQ Message Store:基于文件的存储方式,是以前的默认消息存储,现在不用了
2、KahaDB消息存储(默认):基于日志文件,从ActiveMQ5.4开始默认的持久化插件。kahadb在消息保存目录中只有4类文件和一个lock
3、JDBC消息存储:消息基于JDBC存储的
4、LevelDB消息存储(了解
5、JDBC Message Store with ActiveMQ Journal

1、JDBC消息存储(MQ+MySQL)

1、添加mysql数据库的驱动包到MQ安装目录的lib文件夹
2、jdbcPersistenceAdapter配置

<!--注释以前的,添加如下配置-->
<persistenceAdapter>
          <jdbcPersistenceAdapter dataSource="#mysql-ds"/>
 </persistenceAdapter>

3、数据库连接池配置

<bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://192.168.136.140/activemq?relaxAutoCommit=true"/> 
    <property name="username" value="root"/> 
    <property name="password" value="123456"/> 
    <property name="poolPreparedStatements" value="true"/> 
 </bean> 

4、建仓SQL和建表说明
建一个名为activemq的数据库
运行代码会生成三张表ACTIVEMQ_MSGS、ACTIVEMQ_ACKS、、ACTIVEMQ_LOCK
5、代码运行验证
一定要开启持久化messageProducer.setDeliveryMode(DeliveryMode.PERSISTENT);
6、小总结
如果是queue
在没有消费者消费的情况下会将消息保存到active_msgs表中,只要有任意一个消费者已经消费过了,消费之后这些消息将会立即被删除。
如果是topic
一般是先启动消费订阅然后再生产的情况下会将消息保存到activemq_acks。
这个activemq_acks这个表的CLIENT_ID就记录了订阅者订阅了哪个主题,订阅者所订阅的那些主题每一条都存在了ACTIVEMQ_MSGS这个表里面

2、JDBC Message store with ActiveMQ Journal

这种方式克服了JDBC消息存储的不足,JDBC每次消息过来,都要取写库和读库。JDBC Journal使用高速缓存写入技术,大大提高了性能。当消费者的消费速度能跟上生产者生产的速度时Journal文件能够大大减少需要写入到DB中消息
配置

  <persistenceFactory>
          <journalPersistenceAdapterFactory 
           journalLogFiles="4"
           journalLogFileSize="32768"
           useJournal="true"
           useQuickJournal="true"
           dataSource="#mysql-ds"
           dataDirectory="activemq-data"/>
 </persistenceFactory>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值