ActiveMQ默认的消息持久化方式:
均在 ActiveMQ_HOME/conf/activemq.xml文件中配置实现。
第一种方式
持久化为数据文件方式是ActiveMQ默认使用方式
配置如下:
<persistenceAdapter>
<kahaDBdirectory="${activemq.data}/kahadb"/>
</persistenceAdapter>
第二种方式
通过JDBC将消息持久化到数据库中
配置如下:
<persistenceAdapter>
<jdbcPersistenceAdaptedirectory="${activemq.data}" dataSource="#mysqlDataSource"/>
</persistenceAdapter>
mysqlDataSource数据源配置如下
- <bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost/activemq relaxAutoCommit=true"/>
- <property name="username" value="activemq"/>
- <property name="password" value="activemq"/>
- <property name="poolPreparedStatements" value="true"/>
- </bean>
第三种方式
基于内存的消息存储方式
配置如下:
<broker persistent="false">
<persistenceAdapter>
<jdbcPersistenceAdaptedirectory="${activemq.data}" dataSource="#mysqlDataSource"/>
</persistenceAdapter>
</broker>
ActiveMQ支持一种高效日志方式,具体设置如下:
<persistenceFactory><journalPersistenceAdapterFactory journalLogFiles="5"
dataDirectory="${activemq.base}/data" dataSource="#mysqlDataSource"></journalPersistenceAdapterFactory> </persistenceFactory>
mysqlDataSource数据源配置详见上面配置。
在消息消费者能跟上生产者的速度时,journal文件能大大减少需要写入到DB中的消息。举个例子:生产者产生了10000个消息,这10000个消息会保存到journal文件中,但是消费者的速度很快,在journal文件还未同步到DB之前,以消费了9900个消息。那么后面就只需要写入100个消息到DB了。如果消费者不能跟上生产者的速度,journal文件可以使消息以批量的方式写入DB中,JDBC驱动进行DB写入的优化。从而提升了性能。另外,journal文件支持JMS事务的一致性。
ActiveMQ源码下载地址如下:
https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/
(已迁移)
相关推荐
2. 修改配置文件,如`conf/activemq.xml`,设置网络连接、持久化、安全策略等。 3. 启动ActiveMQ服务,通常是运行`bin/activemq start`命令。 4. 访问Web控制台(默认地址为`http://localhost:8161/admin`),检查...
在生产环境中,为了保证消息的可靠性,通常会使用持久化存储来保存消息,即使在服务重启后也能恢复数据。本主题主要探讨如何将ActiveMQ配置为使用MySQL 8作为其持久化存储方式,以及在这个过程中所需的Jar包。 1. *...
KahaDB是一个轻量级、高效的日志文件系统,提供消息持久化。`kahaDB-store.jar` 是与KahaDB相关的库。 5. **OpenJPA**:OpenJPA是一个开源的Java持久层框架,用于对象关系映射(ORM)。在ActiveMQ中,它用于在KahaDB...
这通常涉及修改`activemq.xml`,设置`<destinationPolicy>`元素中的`<policyEntry>`,将`persistent`属性设为`true`,以确保消息在存储和传输过程中被持久化。 2. **创建订阅者**:在Java代码中,消费者需要通过`...
在这些代码中,可以看到如何使用ActiveMQ的API来设置消息的持久化属性,并且可能包含了连接到ActiveMQ服务器以及发送和接收消息的逻辑。 通过分析这些代码,你可以更深入地理解ActiveMQ如何与MySQL交互,以及如何在...
ActiveMQ 队列消息过期时间设置和自动清除解决方案 ActiveMQ 是一个开源的消息队列系统,用于实现分布式系统之间的异步通信。在使用 ActiveMQ 时,消息过期时间设置和自动清除是一个非常重要的问题。本文将介绍 ...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它基于Java Message Service(JMS)标准,为分布式系统提供高效、可靠的消息传递服务。在ActiveMQ 5.8版本中,我们可以通过源码分析来深入了解其内部工作原理...
2. **订阅持久化**:除了消息的持久化,ActiveMQ 还支持订阅的持久化。这意味着即使消费者在消息发送后断开连接,当其重新连接时,仍能接收到之前错过的所有消息。这种特性通常被称为“Durable Subscription”。 要...
标题中的"activemq持久化jdbc所需jar包.zip"指的是Apache ActiveMQ消息中间件在使用JDBC(Java Database Connectivity)进行消息持久化时所需的库文件集合。ActiveMQ是一款开源、高性能、跨语言的企业级消息代理,它...
spring +activemq topic消息持久化订阅实例,整个项目中有activemq和spring的整合的所有实例,topic的持久化配置是在ApplicationContext3C、ApplicationContext3C2以及ApplicationContext3P三个中,消息生产者:...
1. **消息设置过期**:通过`timeStampingBrokerPlugin`配置消息过期时间。 2. **加入死信队列后直接抛弃**:使用`DiscardingDLQBrokerPlugin`插件直接丢弃死信消息。 **测试过程**: 1. 发送大量的消息。 2. 观察...
ActiveMQ 持久化是指将消息队列持久化到数据库或文件中,以便在断电或崩溃后恢复消息队列。可以使用 Apache ActiveMQ 的持久化机制,例如使用 KahaDB 或 AMQP 等。 集群环境 ActiveMQ 集群环境是指多个 ActiveMQ ...
你可以通过修改`activemq.xml`配置文件来设置持久化存储,比如将消息存储到MySQL数据库。在配置中指定数据源,如下所示: ```xml ${activemq.data} <driverClassName>...
标题中的“activemq-5.15.15 JDBC持久化mysql8.0+的activemq.xml”指的是Apache ActiveMQ的一个特定版本(5.15.15)配置文件,该配置文件用于实现消息队列的数据持久化,通过JDBC连接MySQL 8.0以上的版本。ActiveMQ...
4. **持久化级别**:ActiveMQ 允许用户选择不同的消息持久化级别,例如,可以选择仅持久化消息头,或者同时持久化消息头和正文。这可以根据性能和数据完整性需求进行调整。 5. **事务管理**:在 ActiveMQ 中,可以...
在面试中,面试官可能会问到关于ActiveMQ的一些基础和深入的问题,比如ActiveMQ的特性、消息传递机制、故障处理、消息持久化、性能调优以及消息消费等方面的知识。 1. ActiveMQ的核心概念和功能 ActiveMQ提供了多种...
- 随着Java生态系统的不断发展,了解最新版本的JDK及其对ActiveMQ的影响对于保持软件系统的高效和现代化至关重要。 - 开发者还可以通过参与开源项目贡献代码、修复bug等方式,参与到ActiveMQ等项目的持续发展中去,...
8. **消息持久化**:ActiveMQ支持消息持久化,即使broker重启,消息也不会丢失。这通过在消息发送时设置消息的持久性标志实现。如果消息被持久化,那么即使消费者在消息到达时未在线,当它重新连接时也能接收到消息...
此外,ActiveMQ支持多种协议和特性,如topic、持久化、事务消息等,可以根据项目需求进一步探索和利用。 这个简单的Demo展示了如何在Spring Boot中集成ActiveMQ进行消息接收。通过这种方式,你可以构建出一个可靠的...