ActiveMQ与Spring整合:(2)数据的持久化

原创 2016年08月28日 18:12:21

        由于本系列文章并不是介绍activemq的基本概念和使用,不会activemq基本概念的人可能会觉得云里雾里的,所以最好找一些介绍activemq基本使用的文章。本篇文章主要继承上一篇博客,重点介绍使用,而不是知识点的介绍。

        在学习java消息服务JMS时候,我们经常会设置消息的持久化方式,但是设置了持久化之后,消息如何保存呢?这篇博客主要介绍消息是如何持久化的。消息持久化主要有两种方式:一是持久化文件,二是持久化到数据库中。

1、持久化到文件,默认保存方式为kahaDB。activemq.xml中持久化配置:

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

假如设置发送消息时设置消息为持久化,这时候启动了broken服务器,消息发送者,但是消息接收者没有启动,那么持久化文件中会把消息保存到文件中;知道消息接受者接收消息之后会把消息记录删除。以下kahadb目录为保存的消息记录。


2、保存到数据数据库,如mysql,Oracle数据库。

首先需要下载数据库驱动包,这里使用的是mysql数据库,所以下载了mysql-connector-java-5.0.4-bin.jar,并把jar包放入到apache-activemq-5.8.0\lib目录下。

修改activemq.xml配置文件:

<persistenceAdapter>
            <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
        </persistenceAdapter>
同时在activemq.xml文件的broken节点外面添加如下配置:

   
     <bean id="derby-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="root"/>
    	<property name="maxActive" value="200"/>
    	<property name="poolPreparedStatements" value="true"/>
  </bean>
在数据库中新建activemq数据库,这是启动activemq后,会在数据库下新建三个表:


这时先启动消息发送者,会在activemq_msgs下看到多了一条记录。

再启动消息接受者,会看到表中记录已被删除。



Spring+ActiveMQ+Mysql 配置JMS

一、准备一个可以运行的Spring环境 二、下载ActiveMQ   (下载地址)        2.1 先确保ActiveMQ运行正常,直接运行 安装目录\bin\activemq.bat即可...

JMS学习十一(Spring+ActiveMQ消息持久化,Topic持久化订阅)

消息持久化就是将消息保存到磁盘,这样的好处就是如果服务挂了,则消息还保存在磁盘不会丢失,服务起来后还能找到消息并在此发送,消息的持久化和消息的发送模型是没有关系的。 消息持久化的配置很方便的,所以其他...
  • QH_JAVA
  • QH_JAVA
  • 2017年03月14日 18:06
  • 3193

JMS学习十一(Spring+ActiveMQ消息持久化,Topic持久化订阅)

消息持久化就是将消息保存到磁盘,这样的好处就是如果服务挂了,则消息还保存在磁盘不会丢失,服务起来后还能找到消息并在此发送,消息的持久化和消息的发送模型是没有关系的。 消息持久化的配置很方便的,所以其他...
  • QH_JAVA
  • QH_JAVA
  • 2017年03月14日 18:06
  • 3193

spring(基础10) 注解@Value详解

一 配置方式 @value需要参数,这里参数可以是两种形式: @Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}"...

activemq+spring 持久化发送消息

转:http://blog.csdn.net/u010741376/article/details/51254436 JMS 即 Java message service 是为java提供了...

spring+activemq 发送10W消息报端口被占用的异常分析以及topic持久化订阅

转载来自:http://greemranqq.iteye.com/blog/2167158 、问题解析:         1.测试 发送10W消息,中途会出现      ...

activemq+spring 持久化发送消息

最近的一个项目里,访问压力过大,需要异步处理一些不需要即使处理的请求。 于是考虑用JMS,开始考察了几个jms服务,显示看了openJMS,实验了一下,发现他和spring的结合不是很好,而且只支持...
  • wo240
  • wo240
  • 2016年01月04日 15:56
  • 387

ActiveMQ(三)———spring消息持久化配置

一、Topic与Queue比较1、Topic Publish Subscribe messaging 发布订阅消息。 topic数据默认不落地,是无状态的。 并不保证publisher发布的每条数据,...

Spring配置ActiveMQ持久化发布、订阅Topic

通过Spring对ActiveMQ进行配置开发,发布订阅模式,支持消息的持久化。 需要Spring2.5版本以上,如果有多个订阅者,每个订阅者需要指定不同的 clientId 。   发布者的配...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ActiveMQ与Spring整合:(2)数据的持久化
举报原因:
原因补充:

(最多只允许输入30个字)