Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JMS消息持久化,将ActiveMQ消息持久化到mySql数据库中

JMS消息持久化,将ActiveMQ消息持久化到mySql数据库中

作者头像
Java学习123
发布于 2018-05-16 05:58:53
发布于 2018-05-16 05:58:53
1.7K0
举报
文章被收录于专栏:Java学习123Java学习123

1.  前言

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMSProvider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

关于ActiveMQ 的详细介绍请参考:http://baike.baidu.com/view/433374.htm?fr=aladdin

关于JMS的详细介绍请参考:http://baike.baidu.com/subview/157103/12665866.htm?fr=aladdin

ActiveMQ提供多种数据持久化方式:可以持久化到文件,也可以持久化到数据库,其中数据库可以支持MySQL和Oracle两种类型。

默认提供的是持久化到文件的方式,即activemq.xml文件中的:

<persistenceAdapter>

<kahaDBdirectory="${activemq.base}/data/kahadb"/>

</persistenceAdapter>

2.  步骤

本文重点接收的是持久化到MySQL中的配置方式:

2.1    添加MySQL驱动

首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是:

mysql-connector-java-5.1.30-bin.jar

 commons-pool-1.6.jar

commons-dbcp-1.4.jar

2.2    修改配置文件activemq.xml

将其中的这段配置:

<persistenceAdapter> <kahaDB directory="${activemq.base}/data/kahadb"/> </persistenceAdapter>

修改为下面这段内容:

<persistenceAdapter>

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

</persistenceAdapter>

在</broker>结点之后,增加数据源的配置,如下:

<!-- MySql DataSource Sample Setup -->

<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="root"/>

<property name="password" value="123456"/>

<property name="poolPreparedStatements" value="true"/>

</bean>

<!-- Oracle DataSource Sample Setup -->

  <!--  

<bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>

<property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>

<property name="username" value="root"/>

<property name="password" value="123456"/>

<property name="poolPreparedStatements" value="true"/>

</bean>

 -->

2.3    新建数据库

从配置中可以看出数据库的名称是activemq,需要手动在MySql中新建一个activemq的空数据库。

此时,重新启动MQ,就会发现activemq库中多了三张表:activemq_acks,activemq_lock,activemq_msgs,OK,说明已经持久化成功啦!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ActiveMQ 中的消息持久化 原
为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制。
wuweixiang
2018/08/14
8570
ActiveMQ 中的消息持久化
                                                                            原
MQ 系列之 ActiveMQ 消息持久化机制
  为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制。ActiveMQ 的消息持久化机制有 JDBC,AMQ,KahaDB 和 LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等再试图将消息发送给接收者,成功则将消息从存储中删除,失败则继续尝试发送。消息中心启动以后首先要检查指定的存储位置,如果有未发送成功的消息,则需要把消息发送出去。
Demo_Null
2020/12/14
1.2K0
五分钟快速了解ActiveMQ,案例简单且详细!
window版本的解压后双击/bin/activemq.bat 即可启动。 或者以服务方式启动:右键管理员运行InstallService.bat,然后在Windows系统的服务中启动。
Mshu
2019/07/02
9990
五分钟快速了解ActiveMQ,案例简单且详细!
activeMQ 填坑记
MQ是现在大型系统架构中必不可少的一个重要中间件,之前有偏文章《MQ(消息队列)常见的应用场景解析》介绍过MQ的应用场景,现在流行的几个MQ是rabbitmq,rocketma,kafka,这几个MQ比较最容易找到相关的文章,而也有些系统使用的是activemq,因activemq是相对比较传统的MQ,在使用过程中还是会遇到很多坑,这里简单列举几个大家可能会遇到的问题,把自己使用acitvemq的经验和大家分享一下。
itmifen
2018/10/08
1.2K1
ActiveMQ学习之jdbc消息持久化
将mysql驱动包(驱动名称:mysql-connector-java-5.1.46.jar)复制到activemq的lib文件夹内
用户5899361
2020/12/07
5770
ActiveMQ学习之jdbc消息持久化
springboot与activeMQ入门(2:主从备份,负载均衡)
  单个MQ节点总是不可靠的,一旦该节点出现故障,MQ服务就不可用了,势必会产生较大的损失。这里记录activeMQ如何开启主从备份,一旦master(主节点故障),slave(从节点)立即提供服务,实现原理是运行多个MQ使用同一个持久化数据源,这里以jdbc数据源为例。同一时间只有一个节点(节点A)能够抢到数据库的表锁,其他节点进入阻塞状态,一旦A发生错误崩溃,其他节点就会重新获取表锁,获取到锁的节点成为master,其他节点为slave,如果节点A重新启动,也将成为slave。
用户2038589
2018/09/06
1.5K3
springboot整合ActiveMQ 2(主备模式,负载均衡)
  单个 MQ 节点总是不可靠的,一旦该节点出现故障,MQ 服务就不可用了,势必会产生较大的损失。这里记录 activeMQ 如何开启主从备份,一旦 master(主节点故障),slave(从节点)立即提供服务,实现原理是运行多个 MQ 使用同一个持久化数据源,这里以 jdbc 数据源为例。同一时间只有一个节点(节点 A)能够抢到数据库的表锁,其他节点进入阻塞状态,一旦 A 发生错误崩溃,其他节点就会重新获取表锁,获取到锁的节点成为 master,其他节点为 slave,如果节点 A 重新启动,也将成为 slave。
用户2038589
2019/06/01
9310
activemq的高可用(zookeeper+leveldb)主从集群
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现
互扯程序
2018/12/28
2.4K1
activemq学习之消息发送解析与消息存储(二)
消息同步发送和异步发送 ActiveMQ支持同步、异步两种发送模式将消息发送到broker上。 同步发送过程中,发送者发送一条消息会阻塞直到broker反馈一个确认消息,表示消息已经被broker处理。这个机 制提供了消息的安全性保障,但是由于是阻塞的操作,会影响到客户端消息发送的性能 异步发送的过程中,发送者不需要等待broker提供反馈,所以性能相对较高。但是可能会出现消息丢失的情况。所 以使用异步发送的前提是在某些情况下允许出现数据丢失的情况。 默认情况下,非持久化消息是异步发送的,持久化消息并且是在非事务模式下是同步发送的。 但是在开启事务的情况下,消息都是异步发送。由于异步发送的效率会比同步发送性能更高。所以在发送持久化消 息的时候,尽量去开启事务会话。 除了持久化消息和非持久化消息的同步和异步特性以外,我们还可以通过以下几种方式来设置异步发送
周杰伦本人
2022/10/25
4910
activemq学习之消息发送解析与消息存储(二)
一篇文章让你了解JMS以及中间件之ActiveMQ
点对点模型是基于队列的,生产者发消息到队列,消费者从队列接收消息,队列的存在使得消息的异步传输成为可能。
@派大星
2023/07/15
1.5K0
一篇文章让你了解JMS以及中间件之ActiveMQ
深入了解ActiveMQ!
某一天,系统B的负责人告诉系统A的负责人,现在系统B的SystemBNeed2do(String userId)这个接口不再使用了,让系统A别去调它了。 于是,系统A的负责人说"好的,那我就不调用你了。",于是就把调用系统B接口的代码给删掉了。代码变成这样了:
JAVA日知录
2020/09/08
1.1K0
深入了解ActiveMQ!
消息中间之ActiveMQ
JMS(JAVA Message Service,java消息服务)是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
HUC思梦
2020/09/03
2.1K0
消息中间之ActiveMQ
025. ActiveMQ 持久化原理及事务机制
1. ActiveMQ 持久化方案介绍 ---- ActiveMQ 的消息持久化机制有 JDBC、AMQ、KahaDB 和 LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。 Queu
山海散人
2021/03/03
7430
025. ActiveMQ 持久化原理及事务机制
spring,mybatis配多个数据库
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
逝兮诚
2019/10/30
7320
Java中数据库连接池
今天继续Java的课题,两天没有做任何事情,过了个自在的周末,但是不知道为什么总是有点淡淡的忧桑。
香菜聊游戏
2021/06/07
9490
Java中数据库连接池
ActiveMQ学习之消息存储和可持久化
为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制
用户5899361
2020/12/07
8030
ActiveMQ学习之消息存储和可持久化
Spring学习——Spring常用数据库访问设置
一:配置属性文件 jdbc.properties 1.Sql server 驱动程序类名:com.microsoft.sqlserver.jdbc.SQLServerDriver 数据库URL格式: jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
全栈程序员站长
2022/02/25
2750
Spring学习——Spring常用数据库访问设置
SqlSessionTemplate MapperScannerConfigurer「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。 mybatis SqlSessionFactoryBean SqlSessionTemplate MapperScanner
全栈程序员站长
2022/08/23
5710
javascript: 带分组数据的Table表头排序
接上回继续,项目开发好以后,通常要在多个环境部署,象我们公司多达5种环境:本机环境(local)、(开发小组内自测的)开发环境(dev)、(提供给测试团队的)测试环境(test)、预发布环境(pre)、正式生产环境(prod),每种环境都有各自的配置参数,比如:数据库连接、远程调用的ws地址等等。如果每个环境build前手动修改这些参数,显然太不fashion. maven早就考虑到了这些问题,看下面的pom片段: 1 <profiles> 2 <profile> 3
菩提树下的杨过
2018/01/19
1.5K0
javascript: 带分组数据的Table表头排序
Druid 数据库连接池监控配置(web项目)
Spring数据源配置: <!-- 数据源 --> <!--<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
WindWant
2020/09/11
1.5K0
相关推荐
ActiveMQ 中的消息持久化 原
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档