ActiveMQ持久化方式

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  下载地址

官网下载:

  1. http://activemq.apache.org/download-archives.html  



 

2.2  安装步骤

安装步骤如下:

1、解压;

  1. $ tar -zxvf apache-activemq-5.9.0-bin.tar.gz  
  2. $ cd /bin  
  3. $ ./activemq start &  


运行bin目录下启动mq

 

 

2、相关配置,编辑/conf/activemq.xml配置文件:

Master和Slave添加以下相同配置:

  1. <brokerxmlnsbrokerxmlns="http://activemq.apache.org/schema/core"brokerName="localhost" dataDirectory="${activemq.data}">  
  2.    
  3.         <!--  
  4.             Configuremessage persistence for the broker. The default persistence  
  5.             mechanism isthe KahaDB store (identified by the kahaDB tag).  
  6.             For moreinformation, see:  
  7.    
  8.            http://activemq.apache.org/persistence.html  
  9.         -->  
  10.        <persistenceAdapter>  
  11.             <!-- 
  12.             <kahaDBdirectory="${activemq.data}/kahadb"/> 
  13.             -->  
  14.             <jdbcPersistenceAdapterdataDirectoryjdbcPersistenceAdapterdataDirectory="${activemq.data}/mysqldb"dataSource="#mySql" useDatabaseLock="true"  />  
  15.         </persistenceAdapter>  
  16.    
  17.     </broker>  
  18.      
  19.        
  20.     <!-- MySQLDataSource -->  
  21.     <beanidbeanid="mySql"class="org.apache.commons.dbcp.BasicDataSource">  
  22.         <propertynamepropertyname="driverClassName" value="com.mysql.jdbc.Driver"/>  
  23.         <propertynamepropertyname="url" value="jdbc:mysql://192.168.1.101:3306/activemq?relaxAutoCommit=true"/>  
  24.         <propertynamepropertyname="username" value="root"/>  
  25.         <propertynamepropertyname="password" value="root"/>  
  26.         <propertynamepropertyname="poolPreparedStatements" value="true"/>  
  27.     </bean>  
  28.    


 

 

 

2、启动:

执行/bin目录下activemq

  1. ./activemq start &  


 

 

3、查看启动后的日志:

Master:

 


Slave;

 

如上日志表示启动成功。

 

 

2.3  持久化分类

ActiveMQ持久化常用方式有三种

1、Kahadb文件存储方式;

2、JDBC数据库存储方式;

 

 

3 持久化方式配置

3.1     KahaDB配置

1)  默认持久化配置:

---------------------------------------------------------------------------------------------

  1. <persistenceAdapter>  
  2.     <kahaDBdirectorykahaDBdirectory="${activemq.data}/kahadb"/>  
  3. </persistenceAdapter>  

默认使用kahaDB配置方式;数据文件存放于/data/目录下

 

 

 

3.2     JDBC数据库存储方式

1)  因为需要将数据持久化到数据库,所以需要将相应的数据库驱动jar包放至ActiveMQ的bin目录下;

2)  说明:

持久化后会在数据库中产生3个表:

activemq_acks

activemq_lock

activemq_msgs

 

3)  配置:

Xml代码

MySQL

  1. <persistenceAdapter>  
  2. <jdbcPersistenceAdapterdataDirectoryjdbcPersistenceAdapterdataDirectory="${activemq.base}/data/mysqldb"dataSource="#mySql"/>  
  3. </persistenceAdapter>  


 

      

MySql数据源的配置如下:

  1. <!--MySQL DataSource -->  
  2. <beanidbeanid="mySql" class="org.apache.commons.dbcp.BasicDataSource">  
  3.      <propertynamepropertyname="driverClassName" value="com.mysql.jdbc.Driver"/>  
  4.      <propertynamepropertyname="url"value="jdbc:mysql://127.0.0.1:3306/activemq?relaxAutoCommit=true"/>  
  5.      <propertynamepropertyname="username" value="root"/>  
  6.      <propertynamepropertyname="password" value="root"/>  
  7.      <propertynamepropertyname="poolPreparedStatements" value="true"/>  
  8. </bean>  


 

 

Xml代码

Oracle:

----------------------------------------------------------------------------------------------

  1. <persistenceAdapter>   
  2. <jdbcPersistenceAdapterdataSourcejdbcPersistenceAdapterdataSource="#oracle-ds"/>   
  3. </persistenceAdapter>   


 

 

Oracle数据源的配置如下:

Xml代码 

  1. <bean id="oracle-ds"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">   
  2.       <propertynamepropertyname="driverClassName"value="oracle.jdbc.driver.OracleDriver"/>   
  3.       <property name="url"value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>   
  4.       <property name="username"value="scott"/>   
  5.       <property name="password"value="tiger"/>   
  6.       <property name="maxActive"value="200"/>   
  7.       <propertynamepropertyname="poolPreparedStatements" value="true"/>   
  8.    </bean>   


 

其他数据源配置参照Activemq的文档。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值