• ActiveMQ学习(二)


    队列消息持久化之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分钟后:

  • 相关阅读:
    小、快、简、易、强的“银弹”— fastm
    使用Creative suite 3和Flex Builder3实现Flex 3的换肤
    Apache HTTP Server 与 Tomcat 的三种连接方式介绍
    iframe自动适应付窗口的大小变换
    Flash网络游戏开发入门经验共享
    比较详细的 Linux Top 命令解析
    HttpContext是干什么的
    asp.net,cookie,写cookie,取cookie 的方法
    为什么我们不要 .NET 程序员
    在Ubuntu上安装使用深度影音&深度音乐(推荐)
  • 原文地址:https://www.cnblogs.com/keleaiww/p/11168962.html
Copyright © 2020-2023  润新知