ActiveMQ的消息存储持久化(四)

                        ActiveMQ的消息存储持久化(四)

JDBC持久化消息

ActiveMQ支持使用JDBC来持久化消息,预定义的表如下:

1.消息表,缺省表名为ACTIVEMQ_MSGS,queue和topic都存在里面,结构如下:

2.ACTIVEMQ_ACKS表存储持久订阅的信息和最后一个持久订阅接收的消息ID,结构如下:

3.锁定表,缺省表名为ACTIVEMQ_LOCK,用来确保在某一时刻只能有一个ActiveMQ broker实例来访问数据库 ,结构如下:


使用JDBC来持久化消息的配置示例

<beans>
    <broker brokerName="test-broker" persistent=true
    xmlns="http://activemq.apache.org/schema/core">
    <persistenceAdapter>
        <jdbcPersistenceAdapter dataSource=“#mysql-ds"/>
    </persistenceAdapter>
    </broker>
    <bean name="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-      
     method="close">
    <property name="driverClassName"><value>org.gjt.mm.mysql.Driver</value></property>
    <property name="url"><value>jdbc:mysql://192.168.1.100:3306/test? 
       useUnicode=true&amp;characterEncoding=UTF-8</value></property>
    <property name="username"> <value>root</value> </property>
    <property name="password" value="cc"/>
</bean>

JDBC Message Store with ActiveMQ Journal

这种方式克服了JDBC Store的不足,使用快速的缓存写入技术,大大提高了性能。 配置示例如下: 

<beans>
    <broker brokerName="test-broker" xmlns="http://activemq.apache.org/schema/core">
        <persistenceFactory>
            <journalPersistenceAdapterFactory
            journalLogFiles="4"
            journalLogFileSize="32768"
            useJournal="true"
            useQuickJournal="true"
            dataSource="#derby-ds"
            dataDirectory="activemq-data" />
        </persistenceFactory>
    </broker>
</beans>

JDBC Store和JDBC Message Store with ActiveMQ Journal的区别

  1. Jdbc with journal的性能优于jdbc。
  2. Jdbc用于master/slave模式的数据库分享。
  3. Jdbc with journal不能用于master/slave模式。
  4. 一般情况下,推荐使用jdbc with journal。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值