Activemq消息持久化

官方文档: http://activemq.apache.org/persistence.html

ActiveMq持久化相关配置:/usr/local/apache-activemq-5.11.1/conf/activemq.xml

官方默认的持久化为Kahadb:

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

可以稍作调优:

<persistenceAdapter>
            <kahaDB directory="${activemq.data}/kahadb"
                indexWriteBatchSize="1000"
                journalMaxFileLength="32mb"
                enableIndexWriteAsync="true"
                enableJournalDiskSyncs="false"/>
</persistenceAdapter>

实例展示使用mysql持久化:

修改persistenceAdapter节点:

<persistenceAdapter>
     <jdbcPersistenceAdapter  directory="${activemq.data}/mysqldb" dataSource="#ds-mysql"/>
</persistenceAdapter>
在<import resource="jetty.xml"/>节点前面增加mysql的相关配置信息
<bean id="ds-mysql" 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.147.131:3306/activemq?relaxAutoCommit=true"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
    <property name="maxActive" value="200"/>
    <property name="poolPreparedStatements" value="true"/>
</bean>

添加依赖的dbcp和mysql驱动包到lib

创建activemq数据库重启Activemq,可以看到在activemq库中增加了三个表

发送queue类型消息:

消息被消费了之后持久化的记录会删除.

问题: 测试过程中持久化感觉性能不好,而且消息消费容易锁住.希望得到好的意见和建议 共同学习.

转载请注明出处:[http://www.cnblogs.com/dennisit/p/4552366.html]

时间: 2024-10-01 11:37:04

Activemq消息持久化的相关文章

JMS消息持久化,将ActiveMQ消息持久化到mySql数据库中

ActiveMQ5.8.0版本采用kahadb作为默认的消息持久化方式.使用默认的持久化机制,我们不容易直接看到消息究竟是如何持久的.ActiveMQ提供的JDBC持久化机制,能够将持久化信息存储到数据库.通过查看数据库中ActiveMQ生成的表结构和存储的数据,能够帮助我们更好的了解消息的持久化机制.现在介绍如何配置activemq,将数据持久化到mysql中. 1.配置activeMQ需要的mySql数据源 为了能够使用JDBC访问mysql数据库,显然必须要配置消息服务器的数据库源.在ac

ActiveMQ消息持久化机制

为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的. 就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件.内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试. 消息中心启动以后首先要检查制定的存储位置,如果有未发送成功的消息,则需要把消息发送出去. >>

ActiveMQ消息持久化-JDBC

JDBC 可以将消息存储到数据库中,例如:Mysql.SQL Server.Oracle.DB2. 使用JDBC持久化方式,数据库会创建3个表:activemq_msgs,activemq_acks和activemq_lock. 一.配置方式(Oracle): conf/acticvemq.xml <beans>   <broker brokerName="test-broker" persistent="true" xmlns="htt

ActiveMQ消息持久化-KahaDB

KahaDB KahaDB是从ActiveMQ 5.4开始默认的持久化插件. KahaDb恢复时间远远小于其前身AMQ并且使用更少的数据文件,所以可以完全代替AMQ.(AMQ适用于ActiveMQ5.3之前的版本.) KahaDB的持久化机制同样是基于日志文件,索引和缓存. 一.配置方式: activemq.xml <persistenceAdapter>       <kahaDB directory="${activemq.data}/kahadb"/> &

ActiveMQ消息持久化-LevelDB

LevelDB 这种文件系统是从ActiveMQ5.8之后引进的,它和KahaDB非常相似,也是基于文件的本地数据库储存形式,但是它提供比KahaDB更快的持久性.与KahaDB不同的是,它不是使用传统的B-树来实现对日志数据的提前写,而是使用基于索引的LevelDB. <broker brokerName="broker" ... >   ...   <persistenceAdapter>     <levelDB directory="ac

ActiveMQ 消息持久化到Mysql数据库

[[email protected] local]# tar -zxvf apache-activemq-5.15.8-bin.tar.gz[[email protected] local]# mv apache-activemq-5.15.8 activemq[[email protected] activemq]# cd conf/[[email protected] conf]# pwd/usr/local/activemq/conf[[email protected] conf]# cp

JMS与ActiveMQ消息数据持久化

认识JMSJMS是Java消息服务(Java message service),是java平台关于面向消息中间件(MOM)的API.用于两个应用程序或分布式系统应用中,消息发送,消息异步处理.即应用程序间通信通过JMS服务,进行消息转发.应用程序间消息异步处理可解除应用程序的耦合.JMS有消息异步处理.程序间解耦.消息可靠的优势. JMS消息模型Queue点对点(Point to Point)Queue队列是点对点消费,发送者发送一条消息,只有唯一的一个消费者能对消息进行消费.消息生产者都将消息

ActiveMQ的消息持久化机制

为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的. 就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件.内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试. 消息中心启动以后首先要检查指定的存储位置,如果有未发送成功的消息,则需要把消息发送出去. 1. J

ActiveMQ(3)---ActiveMQ原理分析之消息持久化

持久化消息和非持久化消息的存储原理 正常情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的.能够存储的最大消息数据在${ActiveMQ_HOME}/conf/activemq.xml文件中的systemUsage节点 ,SystemUsage配置设置了一些系统内存和硬盘容量 <systemUsage> <systemUsage> <memoryUsage> //该子标记设置整个ActiveMQ节点的“可用内存限制”.这个值不能超过ActiveMQ本身设置