activemq-docker下安装和配置JDBC持久化

目录

一、安装activemq

二、amq数据库持久化

三、表说明


一、安装activemq

1、下载activemq镜像

docker pull webcenter/activemq

2、查看activemq镜像

docker images

 

二、amq数据库持久化

1、在mysql中创建对应的数据库 

例如:amq数据库

2、下载mysql-connector-java-5.1.49.jar

下载地址:https://dev.mysql.com/downloads/connector/j/5.1.html

3、运行amq容器带文件夹

docker run -d -v /usr/amq:/opt/activemq/amq  --name activemq -p 61616:61616 -p 8161:8161 webcenter/activemq

4、进容器操作

docker exec -it activemq /bin/bash

5、拷贝文件到lib下

cp amq/mysql-connector-java-5.1.49.jar lib

6、修改配置文件

 vim conf/activemq.xml

 

注释原来的持久化配置

 80 <!--

 81         <persistenceAdapter>

 82             <kahaDB directory="${activemq.data}/kahadb"/>

 83         </persistenceAdapter>

 84 -->

 

添加数据库适配器

<persistenceAdapter>

  <jdbcPersistenceAdapter dataSource="#mysql-ds"/>

</persistenceAdapter>

activemq-docker下安装和配置JDBC持久化

添加数据库连接属性配置

  <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.110.130:3306/amq?relaxAutoCommit=true"/>    

     <property name="username" value="root"/>    

     <property name="password" value="123456"/> 

     <property name="poolPreparedStatements" value="true"/>

   </bean>

activemq-docker下安装和配置JDBC持久化

7、保存配置文件,退出容器,重启docker容器

Docker restart activemq

 

重启后就会看到amq数据库创建了3张表

activemq-docker下安装和配置JDBC持久化

至此,基于docker的activemq  JDBC持久化配置完成

 

 

三、表说明

1、activemq_msgs表

作用:用于存储消息,Queue和Topic都存储在这个表中:

ID:自增的数据库主键

CONTAINER:消息的Destination

MSGID_PROD:消息发送者客户端的主键

MSG_SEQ:是发送消息的顺序,MSGID_PROD+MSG_SEQ可以组成JMS的MessageID

EXPIRATION:消息的过期时间,存储的是从1970-01-01到现在的毫秒数

MSG:消息本体的Java序列化对象的二进制数据

PRIORITY:优先级,从0-9,数值越大优先级越高

2、activemq_acks表

作用:用于存储订阅关系。如果是持久化Topic,订阅者和服务器的订阅关系在这个表保存:

主要的数据库字段如下:

CONTAINER:消息的Destination

SUB_DEST:如果是使用Static集群,这个字段会有集群其他系统的信息

CLIENT_ID:每个订阅者都必须有一个唯一的客户端ID用以区分

SUB_NAME:订阅者名称

SELECTOR:选择器,可以选择只消费满足条件的消息。条件可以用自定义属性实现,可支持多属性AND和OR操作

LAST_ACKED_ID:记录消费过的消息的ID。

 

3、activemq_lock表

作用:在集群环境中才有用,只有一个Broker可以获得消息,称为Master Broker,

其他的只能作为备份等待Master Broker不可用,才可能成为下一个Master Broker。
这个表用于记录哪个Broker是当前的Master Broker。