博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库
阅读量:5095 次
发布时间:2019-06-13

本文共 2107 字,大约阅读时间需要 7 分钟。

ActiveMQ 消息持久化机制:

ActiveMQ 消息的持久化机制有 JDBC、AMQ、KahaDB 和 LevelDB,其中本示例版本(5.15.2)默认机制为 KahaDB。无论哪种持久化机制, 消息的存储逻辑都是一致的。

即消息生产者将消息发送之后, 消息中心首先将消息存储到本地数据文件(AMQ/KahaDB),内存数据库(LevelDB)或远程数据库(JDBC)等,然后试图将消息发送给消费者,发送成功将消息从存储中删除,失败则继续尝试。

ActiveMQ启动以后首先会检查指定的持久化机制指定的存储位置,若有未发送的消息,将消息发送出去。

JDBC持久化 MySQL:

配置:

在conf/activemq.xml中persistenceAdapter节点配置jdbcPersistenceAdapter子节点,用于定义持久化方式,在此子节点中定义数据源属性(dataSource="#mysql-ds")指向数据源bean节点。

在beans主节点中定义数据源bean节点,id属性定义为持久化方式中的dataSource属性值。

1 
2
3
4
activemq.xml

定义数据源bean节点:

1 
2
3
4
5
6
7
8
activemq.xml

不可以在数据源中定义<property name="maxActive" value="200"/>属性,此版本activeMQ会抛出异常。

jvm 1    |  WARN | Exception encountered during context initialization - cancelling refresh attempt:    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.activemq.xbean.XBeanBrokerService#0'     defined in class path resource [activemq.xml]: Cannot create inner bean '(inner bean)#29403e43' of type     [org.apache.activemq.store.jdbc.JDBCPersistenceAdapter] while setting bean property 'persistenceAdapter'; nested exception is     org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#29403e43' defined in class path resource [activemq.xml]:     Cannot resolve reference to bean 'mysql-ds' while setting bean property 'dataSource'; nested exception is     org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mysql-ds' defined in class path resource [activemq.xml]:     Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'maxActive' of bean class     [org.apache.commons.dbcp2.BasicDataSource]: Bean property 'maxActive' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

 启动成功后,会在数据库中自动创建3个表:activemq_msgs,activemq_acks和activemq_lock(集群环境下才有用)。

 

转载于:https://www.cnblogs.com/goodcheap/p/8029163.html

你可能感兴趣的文章
Sql Server 中由数字转换为指定长度的字符串
查看>>
win7下把电脑设置成wlan热
查看>>
Java 多态 虚方法
查看>>
jquery.validate插件在booststarp中的运用
查看>>
java常用的包
查看>>
PHP批量覆盖文件并执行cmd命令脚本
查看>>
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
支持向量机——内核
查看>>
MFC注册热键
查看>>
万能的SQLHelper帮助类
查看>>
如何在 Terminal 内可以“用惯用的编辑器”快速打开“目前正在做”的专案(project)呢?...
查看>>
uboot分析:uboot的启动过程分析
查看>>
tmux的简单快捷键
查看>>
springboot笔记04——读取配置文件+使用slf4j日志
查看>>
[Swift]LeetCode653. 两数之和 IV - 输入 BST | Two Sum IV - Input is a BST
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
微信小程序的wxml文件和wxss文件在webstrom的支持
查看>>
[AngularJS] Lazy Loading modules with ui-router and ocLazyLoad
查看>>
.Net Com口通信编程例子
查看>>
js 编程笔记 【无名函数】
查看>>