ActiveMQ 数据库持久化配置

  1. jdbc数据库持久化方式。
  •  首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是:mysql-connector-java-5.1.30-bin.jar
  • activemq将数据持久化到数据库中,不指定具体的数据库,可以使用任意的数据库中,本环节使用mysql数据库。 
  • 下述配置都在activemq.xml中配置,
    首先定义一个mysql-ds的mysql数据源,该bean直接配置到activemq.xml的beans节点下,broker节点外。
     <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://192.168.36.136:3306/activemq?relaxAutoCommit=true"/>
            <property name="username" value="root"/>
            <property name="password" value="root123"/>
            <property name="maxActive" value="200"/>
            <property name="poolPreparedStatements" value="true"/>
      </bean>
  • 在broker节点的配置persitenceAdapter节点中配置jdbcPersistenceAdapter并且引用刚才定义的数据源。 
    dataSource指定持久化数据的bean,createTablesOnStartup是否在启动的时候创建数据表,默认值为true,
    这样每次启动都话去创建数据库表了,一般是第一次启动的时候设置为true,之后改成false.
    <persistenceAdapter>
       <jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="false"/>
    </persistenceAdapter>
  • 然后重新启动activemq.   bin/activemq start
  • 启动完成后会在数据库创建3个表,分别是activemq_msgs,activemq_acks,activemq_lock表其中
    • activemq_msg用于存储消息,Quene和Topic都存储在这个表:
      • id数据库的自增主键
      • container:消息的Destination
      • msgid_prod:消息的发送者客户端的主键
      • msg_seq:是发消息的顺序,msgid_prod+msg_seq可以组成JMS的MessageID
      • expiration:消息的过期时间,存储的是1970-01-01到现在的毫秒数
      • msg:消息本体的java序列对象的二进制数据
      • prioritry:优先级从0-9,数据越大优先级越高
  •  activemq_acks用于存储订阅关系,如果是持久化的Topic,订阅者和服务器订阅关系在这个表保:主要的数据库字段如下
    • container:消息的Destination
    • sub_dest:如果是使用的Static集群,这个字段会有集群和其他系统的信息
    • client_id:订阅者都必须有一个唯一的客户端id用于区分
    • sub_name:订阅者名称
    • selector:选择器,可以选择只消费满足条件的消息,条件可以用自定义属性实现,可以支持多属性and和or操作
    • last_acked_id:记录消费过的消息id
  • activemq_lock在集群环境中才有用,只有一个broker可以获得消息,称为Master Broker,其他的只能作为备份等待

Master Broker不可用,才可能称为下一个Master Broker。这个表用于记录哪个Broker是当前的Master Broker.

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值