activemq JDBC存储,使用mysql持久化

持久化存储支持类型

  • KahaDB存储(默认存储方式)
  • JDBC存储 Memory存储
  • LevelDB存储
  • JDBC With ActiveMQ Journal

正常情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的。能够存储的最大消息数据在
${ActiveMQ_HOME}/conf/activemq.xml文件中的systemUsage节点
SystemUsage配置设置了一些系统内存和硬盘容量

activemq.xml

<systemUsage>
<systemUsage>
    <memoryUsage>
        <memoryUsage percentOfJvmHeap="70" />
    </memoryUsage>
    <storeUsage>
        <storeUsage limit="100 gb"/>
    </storeUsage>
    <tempUsage>
        <tempUsage limit="50 gb"/>
    </tempUsage>
</systemUsage>
</systemUsage>

mysql持久化

第一步:注释调kahadb,添加mysql配置

<persistenceAdapter>
    <!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
    <jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="true" />
</persistenceAdapter>

第二步:添加mysql数据源配置的bean

<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://localhost:3306/activemq?relaxAutoCommit=true"/>
	<property name="username" value="root"/>
	<property name="password" value="root"/>
</bean>

第三步:在activemq更目录的\lib目录下添加以下3个jar包

数据库连接池:commons-dbcp-1.4.jar、commons-pool-1.6.jar

mysql JDBC驱动包:mysql-connector-java-5.1.35.jar

 

第四步:新建数据库activemq并重启activemq

重启后会自动创建3个表:

activemq_msgs 消息表,queue和topic都存在这个表中
activemq_acks 存储持久订阅的信息和最后一个持久订阅接收的消息ID
activemq_locks 锁表,用来确保某一时刻,只能有一个ActiveMQ broker实例来访问数据库

之后发送一个持久化消息不消费掉可以看到数据库表中有数据了

 

JDBC Message store with ActiveMQ Journal

ActiveMQ Journal,使用高速缓存写入技术,大大提高了性能

journal文件能够大大减少需要写入到DB中的消息

如果消费者的消费速度很慢,这个时候journal文件可以使消息以批量方式写到DB

配置好mysql后把persistenceAdapter注释掉添加persistenceFactory即可使用Journal

<!--
<persistenceAdapter>
    <kahaDB directory="${activemq.data}/kahadb"/>
    <jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="true" />
</persistenceAdapter>
-->
<persistenceFactory>
	<journalPersistenceAdapterFactory dataSource="#mysql-ds" dataDirectory="activemq-data"/>
</persistenceFactory>

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值