ActiveMQ持久化 1. 说明使用springactivemq环境 2. ActiveMq topic持久化2.1. AMQ方式 (了解一下) AMQ是一种文件存储形式,它具有写入速度快和容易恢复的特点。消息存储在一个个文件中,文件的默认大小为32M,如果一条消息的大小超过了32M,那么这个值必须设置大一点。当一个存储文件中的消息已经全部被消费,那么这个文件将被标识为可删除,在下一个清除阶段,这个文件被删除。AMQ适用于ActiveMQ5.3之前的版本 2.2. kafadb持久到文件KahaDB ActiveMQ 5.4默认持久化插件 2.2.1. KahaDB主要特性A、日志形式存储消息; B、消息索引以B-Tree结构存储,可以快速更新; B-Tree存储结构参考:https://www.cnblogs.com/gym333/p/6877023.html C、完全支持JMS事务; D、支持多种恢复机制; 2.2.2. 修改activemq.xml文件a) 位置: b) 修改broker c) 修改persistenceAdapter
2.2.3. 生产者配置文件2.2.4. 消费者配置文件消息者设置需要设置标识符clientId即接收者ID。
2.3. jdbc持久化2.3.1. 上传jar包到activemq/lib下
2.3.2. 修改activemq.xml其中数据库对应的地址请修改。
2.3.3. 启动生产者,自动创建三个表
activemq_acks:ActiveMQ的签收信息。 用于存储订阅关系。如果是持久化Topic,订阅者和服务器的订阅关系在这个表保存。 activemq_lock:ActiveMQ的锁信息。 这张表只有在集群环境中才会用到 activemq_msgs:ActiveMQ的消息的信息 用于存储消息,Topic和Queue消息都会保存在这张表中
2.4. LevelDB方式从ActiveMQ 5.6版本之后,又推出了LevelDB的持久化引擎。
目前默认的持久化方式仍然是KahaDB,不过LevelDB持久化性能高于KahaDB,可能是以后的趋势。
在ActiveMQ 5.9版本提供了基于LevelDB和Zookeeper的数据复制方式,用于Master-slave方式的首选数据复制方案。 2.5. 测试:在发布/订阅模下,启动两个生产者,再启动消费者,可实现持久化。
|