最近两天闲暇时候,对activemq做了入门研究,以下心得:
发送消息可以做持久化,非持久化不能保证可靠性,不考虑。持久化分为下面3种。
1. AMQ Message Store
AMQ Message Store是ActiveMQ 5.0 缺省的持久化存储
Message commands被保存到transactional journal(由rolling data logs组成)。
Messages被保存到data logs中,同时被reference store进行索引以提高存取速度。
Date logs由一些单独的data log文件组成,缺省的文件大小是32M,如果某个消息的大小超过了data log文件的大小,那么可以修改配置以增加data log文件的大小。如果某个data log文件中所有的消息都被成功消费了,那么这个data log文件将会被标记,以便在下一轮的清理中被删除或者归档。
2. Kaha Persistence
Kaha Persistence 是一个专门针对消息持久化的解决方案。
它对典型的消息使用模式进行了优化。在Kaha中,数据被追加到data logs中。当不再需要log文件中的数据的时候,log文件会被丢弃。
3. JDBC Persistence
目前支持的数据库有Apache Derby, Axion, DB2, HSQL, Informix, MaxDB, MySQL, Oracle, Postgresql, SQLServer, Sybase。
消息持久化到数据库,如果被消费者消费掉,也会从数据库中删除记录。
工作模式:
Pure Master Slave模式
可以实现消息的双机热备功能;如果master挂了,服务会有slave接管;
但已经挂了的master服务,重新启动时候修复的时候,必须停掉正在运行的先前的slave;
JDBC Master Slave模式
可以实现消息的多点热备功能,一旦master挂掉,剩余的slave中必定会有一个竞争(通过数据库事务锁)成为master来接管服务,已经挂了的master,重启后自动变成slave;Master、Slave的交替完全是即时的,自动的,无需重启任何broker;推荐方案
本人JDBC Master Slave模式下,持久化第三种JDBC Persistence(采用mysql)测试过,测试采用版本为activemq-5.6.0。
测试配置文件只要放在activemq 的conf目录下,在bin下启动使用
activemq xbean:../conf/activemq01.xml
activemq xbean:../conf/activemq01.xml
命令,记得是在2个命令行窗口中,记得修改配置文件里面的数据源,还要把mysql驱动放在activemq的lib下面。
具体配置见附件
分享到:
相关推荐
activeMQ入门到精通
JMS、ActiveMQ入门及深入使用的例子,这些例子都是我测试的
ActiveMQ入门,ActiveMQ介绍和应用案例,提供一个实例(基于spring);
activemq 配置说明与activemq入门讲解
Activemq入门实例.pdf
简单消息服务-httpsqs 博文链接:https://sosuny.iteye.com/blog/509846
activemq入门代码,里面有详细的操作步骤,是入门的不错例子,包含基本消息应用方
ActiveMQ实践入门指南
这是一个activemq应用的简单示例代码,使用maven搭建的.适合刚刚开始学习activemq的程序员
This is an introduction to the document describing ActiveMQ
ActiveMQ 入门实战(3)--SpringBoot 整合 ActiveMQ(csdn)————程序
Apache ActiveMQ5.8 入门最简单例子 消息队列 Master
HETF-ActiveMQ入门手册.doc
下载最新版本4.1.0release, 解压apache-activemq-4.1-incubator.zip(或者apache-activemq-4.1-incubator.tar.gz) 目录如下: +bin (windows下面的bat和unix/linux下面的sh) +conf (activeMQ配置目录,包含最...
HETF-ActiveMQ入门手册.zip
使用activeMQ实现生产者消费者
aix上websphere activemq部署总结.doc
消息队列-activemq入门实例 博客地址:https://blog.csdn.net/u010476739/article/details/100076646
Spring整合JMS(activeMQ)的示例,开发环境为eclipse+maven