文档章节

消息中间件(3)-ActiveMQ消息持久化

haoran_10
 haoran_10
发布于 2016/07/15 16:38
字数 528
阅读 53
收藏 0

ActiveMQ消息持久化

 

一、不使用持久化

<broker persistent= "false" >

</broker>

那么activemq 会自动使用 内存保存消息,使用  org.apache.activemq.store.memory.MemoryPersistenceAdapter 来保存

 

二、消息数据灾难恢复

http://activemq.apache.org/replicated-message-store.html

推荐使用Master/Slave

 

三、持久化

(1)、 Configuring Kaha Persistence,一种格式化消息到文件的引擎,当前ActiveMQ默认的消息持久化引擎。

5.0之前还有一种消息持久化引擎AMQ,但是已经废弃了,推荐使用Kaha。

Kaha Peristence 是一个消息持久化到文件的存储解决引擎,也是ActiveMQ项目的一部分。

提供最优性能进行调优的典型消息使用模式,其中包括写/读和丢弃的消息很快被保存。

数据存储在Kaha附加到数据日志,一旦数据不在有用处,日志文件会丢弃那部分数据。

ActiveMQ 5.0 and above:

<broker brokerName= "broker"  persistent= "true"  useShutdownHook= "false" >

    <transportConnectors>

      <transportConnector uri= "tcp://localhost:61616" />

    </transportConnectors>

    <persistenceAdapter>

      <kahaPersistenceAdapter directory= "activemq-data"  maxDataFileLength= "33554432" />

    </persistenceAdapter>

  </broker>

 

(2)、LevelDB Persistence

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

< persistenceAdapter >

         <   levelDBdirectory   =   "activemq-data"   />

</ persistenceAdapter >

 

(3)、使用JDBC持久化到数据库

<persistenceAdapter>

       <jdbcPersistenceAdapter dataSource= "#my-ds" />

</persistenceAdapter>

注:my-ds 数据库要预先定义好

 

 

(4)、 Replicated LevelDB Store 

 

在ActiveMQ 5.9中,复制并且存储。

它使用Apache zookeeper 从一组代理节点中配置(全部相同的配置),选择一个作为主节点并且存储消息,然后同步所有的其他子节点,让其他子节点更新通过复制到主节点的所有更新。

直白点:zookeeper+ActiveMQ集群,防止单节点挂机。

 

<persistenceAdapter>

            <replicatedLevelDB

                    directory="${activemq.data}"

                    replicas="2"

                    bind="tcp://0.0.0.0:61619"

                    zkAddress="127.0.0.1:2181"

                    zkPassword="password"

                    zkPath="/activemq/leveldb-stores"

                    />

</persistenceAdapter>

 

一图胜千言:

 

推荐使用此方式做为生产中配置。

 

 

 

参考的资料:

http://activemq.apache.org/persistence.html

http://activemq.apache.org/replicated-leveldb-store.html

http://my.oschina.net/u/1455908/blog/310115

 

© 著作权归作者所有

共有 人打赏支持
haoran_10
粉丝 25
博文 88
码字总数 80846
作品 0
杭州
程序员
私信 提问
activeMQ5官方文档翻译-初始化配置

首先你需要把jar包加到classpath 所需的jar包 为了使ActiveMQ更容易使用,默认的activemq-all.jar包包含了所有需要用到的库文件。如果你喜欢以明确的控制jar包的方式来使用ActiveMQ,那下面是...

z_jordon
2015/05/29
0
0
分布式消息通信ActiveMQ

消息中间件 消息中间件是指利用高效可靠的消息传递机制进行平台无关的数据交流,并且基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,可以在分布式架构下扩展进程之间...

架构师springboot
2018/12/23
0
0
ActiveMQ专题2: 持久化

AMQ的持久化问题 前言 前面一篇AMQ专题中,我们发现对于Topic这种类型的消息,即使将deliveryMode设置为持久化,只要生产者在消费者之前启动。消息生产者发布的消息还是会丢失。这是符合JMS...

槟城码农
2018/08/30
0
0
ActiveMQ 持久化(数据库),查询队列剩余消息数、出队数的实现

《ActiveMQ 持久化(文件),查询队列剩余消息数、出队数的实现》分析了消息队列持久化保存,假如activemq服务器突然停止,服务器启动后,还可以继续查找队列中的消息。现在分析队列中的消息...

cookqq
2013/03/04
0
0
ActiveMQ 持久化(文件),查询队列剩余消息数、出队数的实现

本人博客开始迁移,博客整个架构自己搭建及编码 http://www.cookqq.com/listBlog.action 《ActiveMQ发消息和收消息》详细介绍了ActiveMQ发消息和收消息,消息保存在消息队列(queue)中,消息...

cookqq
2013/03/03
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Flink 幕后之内存管理

Flink 幕后之内存管理 引言 目前很多大数据处理框架,例如Hadoop、Spark、Storm、Flink等。它们都基于JVM语言开发(java or scala),运行在JVM上。为了加速合并或者排序(基于磁盘的方式通常...

moyiguke
18分钟前
2
0
风起云涌,看云计算如何赋能媒体行业?

在媒体行业的转型升级中,云计算的出现多维度促进了媒体融合,打破传统媒体行业与新媒体的界限和竞争格局,在媒体素材管理、移动端功能演进的过程中扮演着重要角色,颠覆了传统媒体新闻采编、...

七牛云
21分钟前
1
0
Mybatis开发遇到问题汇总

mybatis 中![CDATA[...]] 在今天使用Mybatis的xml文件中写sql语句时写入了一些特殊字符 如 < > & 等,但解析xml文件的时候会被转义,事实上并不希望它被转义,可以使用<![CDATA[ ]]>. 这是XML...

wangwei2134
29分钟前
1
0
参数验证 @Validated 和 @Valid 的区别

来源:blog.csdn.net/qq_27680317/article/details/79970590 整编:Java技术栈(公众号ID:javastack) Spring Validation验证框架对参数的验证机制提供了@Validated(Spring's JSR-303 规范......

Java技术栈
32分钟前
1
0
JS实现继承的几种方式

前言 JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一。那么如何在JS中实现继承呢?让我们拭目以待。 JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: ...

不负好时光
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部