码迷,mamicode.com
首页 > 其他好文 > 详细

ActiveMQ学习(二)

时间:2019-07-11 12:20:40      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:activemq   rect   alt   highlight   inf   rod   bsp   XML   startup   

队列消息持久化之JDBC 

1、 配置activemq.xml文件,修改持久化方式为jdbc

        <persistenceAdapter>
            <!--<kahaDB directory="${activemq.data}/kahadb"/>-->
            <jdbcPersistenceAdapter dataSource="#mysql-ds" createTablesOnStartup="false" />
        </persistenceAdapter>
createTablesOnStartup默认为true,一般第一次启动时设置为true,后面设置为false

 2、在broker外配置数据库连接bean

	<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:3306/activemq?relaxAutoCommit=true"/>
			<property name="username" value="root"/>
			<property name="password" value="root"/>
			<property name="maxActive" value="200"/>
			<property name="poolPreparedStatements" value="true"/>
	</bean>

  

3、启动服务,可以看到数据库中多了3张表,表明配置成功

技术图片

 

4、运行Producer,模拟生产者发送消息

控制台输出:

技术图片

 Activemq管理控制台:

技术图片

数据库表中:

技术图片

 

 

5、关闭服务并重启,模拟服务器宕机

重启后Activemq管理控制台:技术图片

打开消费端:

技术图片

技术图片

数据库中数据被清除

 6、ActiveMQ设置消息的有效期

在上述的Producer类中,将消息的有效期设置为2分钟,若这条消息发送到了ActiveMQ消息中间件但一直未被消费,直到2分钟的时间到,消息则过期。

            //messageProducer.send(textMessage);
            ///第3个参数:是否持久化;第4个参数:优先级(0~4普通  5~9加急);第5个参数:消息在ActiveMQ中间件中存放的有效期
            messageProducer.send(destination,textMessage,DeliveryMode.PERSISTENT,4,2*60*1000);
            System.out.println("发送消息" + i);

 

执行Producer,但是不执行Consumer。

Activemq管理控制台:

技术图片

数据库表中:

技术图片

2分钟后:

技术图片

 

 

 

技术图片

 

ActiveMQ学习(二)

标签:activemq   rect   alt   highlight   inf   rod   bsp   XML   startup   

原文地址:https://www.cnblogs.com/keleaiww/p/11168962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!