- 浏览: 7332355 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
ActiveMQ很好的支持了消息的持久性(Persistence)。消息持久性对于可靠消息传递来说应该是一种比较好的方法,有了消息持久化,即使发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息中心重新启动后仍然可以将消息发送出去,如果把这种持久化和ReliableMessaging结合起来应该是很好的保证了消息的可靠传送。
消息持久性的原理很简单,就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试。消息中心启动以后首先要检查制定的存储位置,如果有未发送成功的消息,则需要把消息发送出去。
对于ActiveMQ,消息的持久化同样是很简单的,仅仅通过配置信息就可以实现。这里主要介绍两种不同的持久化方法。
1。High performance journal
这是ActiveMQ基于开源的HOWL(High-speed ObjectWeb Logger),将HOWL扩展为可以存储任意大小的消息(HOWL只能存储固定大小的记录),实现的一种消息持久化方法。它可以快速的将消息存储在本地文件中,且这种文件是以一种类似数据库的方式管理的。这样,如果你发送了10,000个消息,可能只有很少数的消息没有发送成功,当达到一个checkpoint的时候,journal将一批未成功消息通过JDBC存储到数据库,这样避免了多次的数据库操作,很大程度上提高了性能并且保证了可靠性。
配置方法非常简单,就是无需配置,呵呵。ActiveMQ默认支持Journal,在activemq.xml配置文件中,可以找到如下信息:
<persistenceAdapter>
<journaledJDBC journalLogFiles="5" journalLogFileSize="1024" dataDirectory="${activemq.home}/activemq-data"/>
</persistenceAdapter>
这里可以改动的就是journalLogFiles,这个属性是制定默认创建几个数据文件来存储消息。journalLogFileSize为数据文件大小,默认为20MB。dataDirectory指向了存储数据文件的位置。
2。使用MySQL进行消息持久化
ActiveMQ持久几乎所有数据库(因为是通过JDBC把消息存储到数据库的)。方法同样简单,就是配置信息稍微有点变化。
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds"/>
</persistenceAdapter>
其中dataSource指定了所用数据源的名字为mysql-ds。需要在activemq.xml文件中的<broker>标签之外配置数据源。下面是MySql的配置信息。
<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/activemq?relaxAutoCommit=true"/>
<property name="username" value="gos2"/>
<property name="password" value="gos2"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
KahaDB 支持多种机制在系统异常关闭后重启并恢复。包括检测数据文件丢失和还原损坏的metadata。这些特性并不能完全保证系统异常关闭不造成消息丢失。如果需要保证系统的高可靠性,建议部署到容灾系统上。例如RAID磁盘阵列中。
当broker正常关闭时, KahaDB message store会将所有的缓存数据刷到文件系统中。尤其是这些数据:
1、所有未处理的日志数据
2、所有缓存的metadata
最后meta store中的信息与journal数据文件中的数据保持一致性。
正常情况下,在系统恢复时优先读取journal中的数据。因为metacache中的索引信息是周期性的更新到meta store中的。当系统异常关闭时,可能journal中有的数据meta store中并没有不存在索引。但是KahaDB在恢复时会先读取meta store中的数据,然后再读取journal有但是meta store不存在的数据(因为KahaDB根据meta store中的索引信息快速定位到metastore没有但是journal文件中包含的数据,然后根据这些数据重新在meta store中建立索引信息)
KahaDB会在更新metadata store之前,保存更新操作的概要信息到重做日志(db.redo)中。减少系统异常关闭时的风险。因为重做日志非常小,所以在系统异常关闭时能快速写入。当系统恢复时会判断重做日志中的信息是否需要更新到metadata中。
如果 metadata store 已被不可挽回的损坏了,可以删除metadata store文件(db.data)来强制恢复;只不过这个时候,broker会读取所有的journal文件来重建metadata store,需要一段比较长的时间。
KahaDB可以检测是否有journal文件丢失,如果有丢失,默认将会抛出一个异常然后关闭。便于管理员调查丢失的journal文件,并手动还原。可以通过设置ignoreMissingJournalfiles为true,让broker在启动时忽略这些丢失的journal文件。
KahaDB同样可以检测journal文件的完整性。不过这些特性需要明确的配置来启用。
Xml代码
1.<persistenceAdapter>
2. <kahaDB directory="activemq-data"
3. journalMaxFileLength="32mb"
4. checksumJournalFiles="true"
5. checkForCorruptJournalFiles="true"
6. />
7.</persistenceAdapter>
发表评论
-
ActiveMQ的拦截器插件
2011-07-22 09:29 6601ActiveMQ拦截器使用和原 ... -
ActiveMQ的各种表SQL的管理
2011-07-20 20:58 3504在ActiveMQ为了方便的切换数据库,更为了深入 ... -
ActiveMQ中advisory的使用和原理
2011-07-20 18:46 2902在ActiveMQ中的监控和管理也可以通过Advisory实现 ... -
ActiveMQ的异步转发(DispatchAsync)功能
2011-07-20 11:29 47021. 消息者异步转发功能 针对正常情况下,在一个 ... -
ActiveMQ 的独占消费(Exclusive Consumer)
2011-07-20 11:26 4096我们经常希望维持队列中的消息,按一定次序转发给消息者。然而当有 ... -
ActiveMQ5.5在Tomcat6.0中部署
2011-07-19 22:27 2922在ActiveMQ中监控管理Web组件为ActiveMQCon ... -
Window 下ActiveMQ端口冲突,负载均衡,主备配置
2011-07-17 16:03 5526在Java 学习中Window操作系 ... -
ActiveMQ中消息权限策略
2011-07-17 00:31 2668在ActiveMQ发送消息的时候,可以通过MessageAut ... -
ActiveMQ和Jetty整合使用
2011-07-07 22:49 5586在ActiveMQ中的activemq.b ... -
ActiveMQ 和Commons-Daemon整合
2011-07-07 20:13 2941在一般的java项目中,如果在linu ... -
关于ActiveMQ中怎么实现一对多发送消息讨论
2011-07-07 19:50 6067无 ... -
ActiveMQ 中ActiveMQBlobMessage的接收和发送
2011-07-05 10:47 5122在ActiveMQ中对比较大的消息采用一 ... -
ActiveMQ 和JAXWS整合
2011-07-04 22:02 2212在多个系统中可能考虑到远程访问等的,采用WebServ ... -
ActiveMQ-Camel的使用
2011-07-02 10:27 10224在一个电子系统中可能接受来自不同供应商的 ... -
ActiveMQ模板和Velocity整合使用
2011-07-01 19:50 2306ActiveMQ模板使用 在ActiveMQ中AMQ ... -
ActiveMQ中消息游标
2011-06-30 18:16 2657在 ActiveMQ 5.0的之前版本中,b ... -
ActiveMQ和Tomcat的整合应用
2011-06-30 17:00 11210在ActiveMQ的资源让容器Tomcat管理时 ... -
ActiveMQ关于文件传输需要注意哪些方面?
2011-06-18 22:11 6177最近一直在关注一些文件传输中间件的实现,想用Acti ... -
关于ActiveMQ中Session和Connection资源的管理
2011-06-15 23:43 25099配置完了持久化之后,我们就可以使用代码来发送 ... -
ActiveMQ中关于文件锁的机制的学习
2011-06-14 23:31 3334在ActiveMQ中提供了文件数据库机 ...
相关推荐
Apache ActiveMQ是业界广泛使用的开源消息中间件,它支持多种协议,如AMQP、STOMP、MQTT等,且提供了消息持久化功能,确保在系统故障后仍能恢复消息,保持数据完整性。本主题主要围绕“activemq消息持久化所需Jar包...
深入研究源代码,你将能发现ActiveMQ如何处理事务、保证消息顺序、实现消息的可靠传递以及故障恢复机制。此外,还可以学习到如何利用它的网络集群功能来构建高可用的消息系统。 对于开发者来说,理解ActiveMQ 5.7的...
9. **管理界面**:ActiveMQ提供了一个Web管理界面,允许用户监控和管理消息代理,包括查看队列状态、日志和配置等。 10. **故障恢复与高可用性**:ActiveMQ支持主备切换和复制,确保在单个节点失败时,服务能够继续...
- **队列的可靠性**:ActiveMQ通过消息确认机制保证消息不会丢失。只有当消费者成功处理完消息并发送确认后,该消息才会从Queue中删除。 #### 四、关于Message Cursor的分析 如前所述,Message Cursor是ActiveMQ中...
4. **持久化机制**:ActiveMQ使用KahaDB作为默认的持久化存储,源码中可以查看消息如何被持久化,以及在系统重启后如何恢复状态。 5. **集群与高可用性**:ActiveMQ支持集群模式,通过源码可以学习到如何配置和管理...
ActiveMQ 5是其一个重要的版本,提供了高度可扩展性和可靠性,广泛应用于分布式系统中的消息传递。 源码分析是深入理解软件工作原理的关键步骤。ActiveMQ 5的Java源码包含了许多核心组件和模块,例如: 1. **...
Apache ActiveMQ是世界上最流行的开源消息代理和队列...总之,Apache ActiveMQ是一个强大的消息中间件,适用于构建分布式系统和微服务架构,提供可靠的异步通信机制,确保数据在复杂的网络环境中安全、高效地传递。
1. **消息可靠性**:确保消息在传输过程中不会丢失,这可以通过确认机制、事务或者Durable Subscriptions来实现。 2. **性能优化**:合理配置缓存大小、消息批量发送、选择合适的消息格式(如文本、二进制或XML)...
同时,ActiveMQ支持多种特性,如事务处理、消息确认、消息分发策略(如广播、路由),以及消息优先级和时间戳,确保了消息的可靠性和一致性。 为了在Windows上部署这个版本的ActiveMQ,你需要: 1. 解压下载的zip...
同时,ActiveMQ的事务处理和消息确认机制确保了消息传递的可靠性。 总之,Windows版ActiveMQ是一个强大的消息中间件,适用于Windows环境,提供高效、可靠的异步通信解决方案,广泛应用于微服务架构、大数据处理和...
Apache ActiveMQ是世界上最流行的开源消息代理,它是一个Java消息...总的来说,Apache ActiveMQ 5.2.0是一个功能强大的消息中间件,它在企业级应用中广泛用于构建高可靠性的消息传递系统,提高系统的灵活性和可扩展性。
Apache ActiveMQ 是一个开源的消息中间件,它实现了多种消息协议,如JMS(Java Message Service)和AMQP(Advanced Message Queuing Protocol),并且广泛应用于分布式系统中,提供可靠的消息传递和队列管理。...
5. **KahaDB Store**:`activemq-kahadb-store-5.9.1.jar`包含了ActiveMQ的KahaDB存储引擎,这是一种持久化机制,用于在内存中缓存消息并将其写入磁盘,确保即使在服务器故障后也能恢复消息。 6. **Log4j**:`log4j...
ActiveMQ以其高性能、高可靠性和易于管理的特点,在企业级应用中备受青睐。本指南将带你逐步了解如何开始使用ActiveMQ,并深入探讨其核心功能和实践应用。 一、ActiveMQ简介 ActiveMQ是Apache软件基金会的一个项目...
在实际应用中,使用MySQL作为ActiveMQ的持久化存储可以带来诸多好处,例如利用数据库的备份和恢复机制,提高系统的整体可靠性和可扩展性。但是,这也意味着需要考虑数据库性能和容量规划,因为ActiveMQ的所有消息...
通过以上步骤和知识点,你可以在Linux环境中成功安装和配置Apache ActiveMQ,利用其强大的消息传递功能来构建可靠、可扩展的应用系统。不过,请记得在实际操作中根据你的具体需求和环境进行相应的调整。
在Linux环境中部署和使用ActiveMQ,能够有效地提高系统的可扩展性和解耦性,尤其适合大型分布式系统中的数据交换。ActiveMQ 5.15.8是该产品的一个稳定版本,它包含了多项优化和修复,确保了更好的性能和稳定性。 1....
ActiveMQ作为JMS提供者,支持点对点(Queue)和发布/订阅(Topic)两种消息模型,以及事务处理和消息确认机制,确保消息的可靠传输。 **3. 主要特性** - **高可用性**:ActiveMQ支持集群,可以创建多台服务器组成的...
10. **持久化机制**:支持KahaDB和LevelDB两种持久化引擎,保证在系统重启后能够恢复消息队列的状态。 在实际应用中,Apache ActiveMQ 5.8可以应用于各种场景,如微服务之间的通信、大数据流处理、事件驱动架构等。...
- **集群**:ActiveMQ集群是多个ActiveMQ服务器实例的集合,它们共享消息负载,提高系统的可用性和可靠性。当一个节点故障时,其他节点可以接管其工作,确保服务不间断。 - **网络连接器**:ActiveMQ集群间通信的...