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

ActiveMQ5.8.0版本采用kahadb作为默认的消息持久化方式。使用默认的持久化机制,我们不容易直接看到消息究竟是如何持久的。ActiveMQ提供的JDBC持久化机制,能够将持久化信息存储到数据库。通过查看数据库中ActiveMQ生成的表结构和存储的数据,能够帮助我们更好的了解消息的持久化机制。现在介绍如何配置activemq,将数据持久化到mysql中。

1.配置activeMQ需要的mySql数据源

为了能够使用JDBC访问mysql数据库,显然必须要配置消息服务器的数据库源。在activemq\apache-activemq-5.8.0\conf\activemq.xml进行配置

<!-- MySQL DataSource -->
	<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/amq_db?relaxAutoCommit=true"/>
		<property name="username" value="root"/>
		<property name="password" value="root"/>
		<property name="poolPreparedStatements" value="true"/>
	</bean>

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

2.改变activeMQ默认的持久化方式

在activemq.xml中注释掉默认的kahadb,使用jdbc持久化

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

		<persistenceAdapter>
			<jdbcPersistenceAdapter dataSource="#mysqlDataSource"/>
		</persistenceAdapter>

3.提供mysql的驱动程序

由于activeMQ消息服务器,没有自带mysql数据库的驱动程序。我们需要手动将mysql驱动添加到消息服务器。

方法是将驱动拷贝到apache-activemq-5.8.0\lib\目录下。

经过上面的三步配置,我们重新启动消息服务器,就可以发现activeMQ在数据库中新建了3张表

activemq_acks  ,activemq_lock  ,activemq_msgs 。至此数据库持久化完成。后续博客会继续介绍这3张表的含义和使用,目前我还不清楚。

JMS消息持久化,将ActiveMQ消息持久化到mySql数据库中,布布扣,bubuko.com

时间: 2024-10-22 17:25:08

JMS消息持久化,将ActiveMQ消息持久化到mySql数据库中的相关文章

JMS服务器ActiveMQ的初体验并持久化消息到MySQL数据库中

JMS服务器ActiveMQ的初体验并持久化消息到MySQL数据库中 一.JMS的理解JMS(Java Message Service)是jcp组织02-03年定义了jsr914规范(http://jcp.org/en/jsr/detail?id=914),它定义了消息的格式和消息传递模式:消息包括:消息头,消息扩展属性和消息体,其结构看起来与SOAP非常的相似,但一般情况下,SOAP主要关注远程服务调用,而消息则专注于信息的交换:消息分为:消息生产者,消息服务器和消息消费者.生产者与消费者之间

JMS学习四(ActiveMQ消息过滤)

消息的过期.消息的选择器和消息的优先级. 一.消息的过期 允许消息过期 .默认情况下,消息永不会过期.如果消息在特定周期内失去意义,那么可以设置过期时间. 有两种方法设置消息的过期时间,时间单位为毫秒: 1.使用消息生产者的setTimeToLive 方法为所有的消息设置过期时间.2.使用消息生产者的send 方法为每一条消息设置过期时间. 消息过期时间,send 方法中的 timeToLive 值加上发送时刻的 GMT 时间值.如果 timeToLive 值等于零,则 JMSExpiratio

JMS学习六(ActiveMQ消息传送模型)

ActiveMQ 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布 /订阅模型),分别称作:PTP Domain 和Pub/Sub Domain. 一.PTP消息传送模型 1.PTP(使用Queue 即队列目标) 消息从一个生产者传送至一个消费者.在此传送模型中,目标是一个队列.消息首先被传送至队列目标,然后根据队列传送策略,从该队列将消息传送至向此队列进行注册的某一个消费者,一次只传送一条消息.可以向队列目标发送消息的生产者的数量没有限制,但每条消息只能发送至.并

python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库

前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用的IDE是 “神奇” 的 pycharm: 1. 首先新建一个python的项目,并且安装 “mysql-connector-python”. “mysql-connector-python” 是MySQL官方对于python的数据驱动,感兴趣的童鞋可以移步这里: https://dev.mysql

JMS与ActiveMQ消息数据持久化

认识JMSJMS是Java消息服务(Java message service),是java平台关于面向消息中间件(MOM)的API.用于两个应用程序或分布式系统应用中,消息发送,消息异步处理.即应用程序间通信通过JMS服务,进行消息转发.应用程序间消息异步处理可解除应用程序的耦合.JMS有消息异步处理.程序间解耦.消息可靠的优势. JMS消息模型Queue点对点(Point to Point)Queue队列是点对点消费,发送者发送一条消息,只有唯一的一个消费者能对消息进行消费.消息生产者都将消息

理解JMS规范中消息的传输模式和消息持久化

JMS规范定义了2种消息传输模式:持久传送模式和非持久传输模式.发送者可以通过如下类似的代码进行设置 TopicPublisher publihser = session.createPublisher(topic); // 设置持久化传输 publihser.setDeliveryMode(DeliveryMode.PERSISTENT); 这种方式对publisher发送的所有消息都有效,相当于是一个全局的效果.如果只是想设置某一个消息的传输模式,可以通过以下代码设置消息头的属性来实现 Te

客户端发送中文消息到服务端Mysql数据库乱码的问题

这些天的实训写了一个班级发布消息到云端的小android应用,其中注册用户信息的时候需要将中文消息上传到云端的mysql数据库中,如果直接传中文字符串过去在数据库中会出现?的乱码,在加了如下代码之后问题得到了解决 其中tag是要传递的字符串:

JMS学习八(ActiveMQ的消息持久化到Mysql数据库)

1.将连接Mysql数据库的jar文件,放到ActiveMQ的lib目录下 2.修改ActiveMQ的conf目录下的active.xml文件,修改数据持久化的方式 2.1  修改原来的kshadb的持久化数据的方式 <persistenceAdapter> <!-- <kahaDB directory="${activemq.data}/kahadb"/> --> <jdbcPersistenceAdapter dataSource=&quo

ActiveMQ消息持久化-JDBC

JDBC 可以将消息存储到数据库中,例如:Mysql.SQL Server.Oracle.DB2. 使用JDBC持久化方式,数据库会创建3个表:activemq_msgs,activemq_acks和activemq_lock. 一.配置方式(Oracle): conf/acticvemq.xml <beans>   <broker brokerName="test-broker" persistent="true" xmlns="htt