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 <persistenceAdapter>
2     <!-- 持久化远程数据库 -->
3     <jdbcPersistenceAdapter dataSource="#mysql-ds"  createTablesOnStartup="true"/>
4 </persistenceAdapter>

activemq.xml

定义数据源bean节点:

1 <!-- 数据源 -->
2 <bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
3     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
4     <property name="url" value="jdbc:mysql://localhost:3306/activemq?relaxAutoCommit=true"/>
5     <property name="username" value="root"/>
6     <property name="password" value="root"/>
7     <property name="poolPreparedStatements" value="true"/>
8 </bean>

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

ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库相关推荐

  1. 写底层 jdbc 实现mysql数据库增删改的 合并方法 的类 继承ConnectionFactory 实现DaoMessage接口: 并批量添加数据

    接口: public interface DaoMessage<T> {int ERROR = 0x400;int SUCCESS = 0x200; //接口参数默认finalint ge ...

  2. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  3. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  4. [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: 通过使用addBatc ...

  5. JAVA-数据库之JDBC连接MySQL数据库

    相关资料: <21天学通Java Web开发> JDBC连接MySQL数据库 1.如果需要通过JDBC来连接MySQL数据库,还必须先在MySQL数据库服务器中创建数据库和表. Conne ...

  6. jsp mysql驱动程序_JSP通过JDBC驱动MySQL数据库方法

    JSP通过JDBC驱动MySQL数据库方法 发布时间:2020-03-26 15:42 百度谷歌一翻后,发现jsp要连mysql数据库的话,有这样的一种方法:使用jsp通过JDBC驱动链接MySQL数 ...

  7. JDBC对MySQL数据库存储过程的调用

    一.MySQL数据库存储过程: 1.什么是存储过程 存储过程(英文:Stored Procedure)是在大型数据库系统中,为了完毕特定功能而编写的一组的SQL语句集.存储过程经编译存储在数据库中.用 ...

  8. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  9. jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...

    Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...

  10. C mysql批量写入_使用JDBC在MySQL数据库中快速批量插入数据

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: Adds a set of ...

最新文章

  1. 渗透知识-脚本木马的制作原理
  2. TinyXML2 的使用
  3. python运行时间的两种方法
  4. shell之常用脚本
  5. DCMTK:创建和验证DICOM数字签名
  6. lisp 绘制立体感的五角星_[原创]圆内加五角星lsp代码,详细有注解
  7. 让计算机等待的函数_第56p,装饰器,闭包函数的应用
  8. PTA c语言 选择法排序过程
  9. MVC.Net:将Reponse Redirect从Get变为Post
  10. 自制系统垃圾清理BAT小工具
  11. 随想录(我们从uboot学什么)
  12. bootstrap table 适应移动端_前端框架bootstrap和layui有什么区别
  13. 数据-第10课-循环链表
  14. WPF 语言格式化文本控件
  15. centos7卸载docker_新手快速入门Docker,轻松掌握Docker安装与使用
  16. java 调用 axis2_java调用WebService服务 axis2实现方式
  17. excel文件修复工具_TunesKit Video Repair下载_视频文件修复工具官方版下载[修复工具]...
  18. IOS逆向分析—终极详细(一)
  19. python语言的就业方向_Python语言就业方向
  20. django之csrf_exempt解决跨域请求的问题

热门文章

  1. 【转】LoadRunner中事务和集合点的放置顺序问题
  2. python属性查找 深入理解(attribute lookup)
  3. Qt中的对话框(模态,非模态,关于,问题,文件)
  4. 宽字符与Unicode
  5. 总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
  6. 结构体的空间分配和位定义
  7. SharePoint 网站搬迁
  8. 【Spring cloud 系列】:构建Eureka Server (02)
  9. 编写一个关于浏览器盒子模型的方法
  10. jquery对标签属性操作