ActiveMQ持久化配置
1 概述
ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。ActiveMQ使用Apache提供的授权,任何人都可以对其实现代码进行修改。
ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。ActiveMQ实现了JMS标准并提供了很多附加的特性。这些附加的特性包括,JMX管理(java Management Extensions,即java管理扩展),主从管理(master/salve,这是集群模式的一种,主要体现在可靠性方面,当主中介(代理)出现故障,那么从代理会替代主代理的位置,不至于使消息系统瘫痪)、消息组通信(同一组的消息,仅会提交给一个客户进行处理)、有序消息管理(确保消息能够按照发送的次序被接受者接收)。消息优先级(优先级高的消息先被投递和处理)、订阅消息的延迟接收(订阅消息在发布时,如果订阅者没有开启连接,那么当订阅者开启连接时,消息中介将会向其提交之前的,其未处理的消息)、接收者处理过慢(可以使用动态负载平衡,将多数消息提交到处理快的接收者,这主要是对PTP消息所说)、虚拟接收者(降低与中介的连接数目)、成熟的消息持久化技术(部分消息需要持久化到数据库或文件系统中,当中介崩溃时,信息不会丢失)、支持游标操作(可以处理大消息)、支持消息的转换、通过使用Apache的Camel可以支持EIP、使用镜像队列的形式轻松的对消息队列进行监控等。
2 自定义安装
2.1 下载地址
官网下载:
http://activemq.apache.org/download-archives.html
2.2 安装步骤
安装步骤如下:
1、解压;
$ tar -zxvf apache-activemq-5.9.0-bin.tar.gz
$ cd /bin
$ ./activemq start &
运行bin目录下启动mq
2、相关配置,编辑/conf/activemq.xml配置文件:
Master和Slave添加以下相同配置:
<brokerxmlns="http://activemq.apache.org/schema/core"brokerName="localhost" dataDirectory="${activemq.data}">
<!--
Configuremessage persistence for the broker. The default persistence
mechanism isthe KahaDB store (identified by the kahaDB tag).
For moreinformation, see:
http://activemq.apache.org/persistence.html
-->
<persistenceAdapter>
<!--
<kahaDBdirectory="${activemq.data}/kahadb"/>
-->
<jdbcPersistenceAdapterdataDirectory="${activemq.data}/mysqldb"dataSource="#mySql" useDatabaseLock="true" />
</persistenceAdapter>
</broker>
<!-- MySQLDataSource -->
<beanid="mySql"class="org.apache.commons.dbcp.BasicDataSource">
<propertyname="driverClassName" value="com.mysql.jdbc.Driver"/>
<propertyname="url" value="jdbc:mysql://192.168.1.101:3306/activemq?relaxAutoCommit=true"/>
<propertyname="username" value="root"/>
<propertyname="password" value="root"/>
<propertyname="poolPreparedStatements" value="true"/>
</bean>
2、启动:
执行/bin目录下activemq
./activemq start &
3、查看启动后的日志:
Master:
Slave;
如上日志表示启动成功。
2.3 持久化分类
ActiveMQ持久化常用方式有三种
1、Kahadb文件存储方式;
2、JDBC数据库存储方式;
3 持久化方式配置
3.1 KahaDB配置
1) 默认持久化配置:
---------------------------------------------------------------------------------------------
<persistenceAdapter>
<kahaDBdirectory="${activemq.data}/kahadb"/>
</persistenceAdapter>
默认使用kahaDB配置方式;数据文件存放于/data/目录下
3.2 JDBC数据库存储方式
1) 因为需要将数据持久化到数据库,所以需要将相应的数据库驱动jar包放至ActiveMQ的bin目录下;
2) 说明:
持久化后会在数据库中产生3个表:
activemq_acks
activemq_lock
activemq_msgs
3) 配置:
Xml代码
MySql:
<persistenceAdapter>
<jdbcPersistenceAdapterdataDirectory="${activemq.base}/data/mysqldb"dataSource="#mySql"/>
</persistenceAdapter>
MySql数据源的配置如下:
<!--MySQL DataSource -->
<beanid="mySql" class="org.apache.commons.dbcp.BasicDataSource">
<propertyname="driverClassName" value="com.mysql.jdbc.Driver"/>
<propertyname="url"value="jdbc:mysql://127.0.0.1:3306/activemq?relaxAutoCommit=true"/>
<propertyname="username" value="root"/>
<propertyname="password" value="root"/>
<propertyname="poolPreparedStatements" value="true"/>
</bean>
Xml代码
Oracle:
----------------------------------------------------------------------------------------------
<persistenceAdapter>
<jdbcPersistenceAdapterdataSource="#oracle-ds"/>
</persistenceAdapter>
Oracle数据源的配置如下:
Xml代码
<bean id="oracle-ds"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
<propertyname="driverClassName"value="oracle.jdbc.driver.OracleDriver"/>
<property name="url"value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>
<property name="username"value="scott"/>
<property name="password"value="tiger"/>
<property name="maxActive"value="200"/>
<propertyname="poolPreparedStatements" value="true"/>
</bean>
其他数据源配置参照Activemq的文档。