• 【ActiveMQ】持久化消息队列的三种方式


    原文链接:https://tidyko.com/posts/632d0b70.html

    1.ActiveMQ消息持久化方式,分别是:文件、mysql数据库、oracle数据库

    2.修改方式:

      a.文件持久化:

      ActiveMQ默认的消息保存方式,一般如果没有修改过其他持久化方式的话可以不用修改配置文件。

      如果是修改过的,打开盘符:apache-activemq-版本号confactivemq.xml,然后找到<persistenceAdapter>节点,将其替换成以下代码段

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

      然后修改配置文件(此处演示为spring+ActiveMQ),找到消息发送者所对应的JmsTemplate配置代码块,增加以下配置

    <!--  是否持久化  DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久 -->   
    <property name="deliveryMode" value="2" />

      以下是JmsTemplate配置完整版

     <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->  
     <bean id="jmsTemplateOne" class="org.springframework.jms.core.JmsTemplate">
         <property name="connectionFactory" ref="connectionFactory"/>
         <!-- 设置默认的消息目的地-->
         <property name="defaultDestination" ref="queueDestination"/>
         <property name="receiveTimeout" value="10000" />
         <!--  是否持久化  DeliveryMode.NON_PERSISTENT=1:非持久 ; DeliveryMode.PERSISTENT=2:持久 -->   
         <property name="deliveryMode" value="2" /> 
     </bean>

      这样就算配置完成了文件持久化方式了,重启项目和ActiveMQ,发送一定消息队列之后关闭ActiveMQ服务,再启动,你可以看到之前发送的消息未消费的依然保持在文件里面,继续让监听者消费。

      b.MySQL持久化

      首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是:mysql-connector-java-5.1.27.jar

      然后打开盘符:apache-activemq-版本号confactivemq.xml,然后找到<persistenceAdapter>节点,将其替换成以下代码段

    <persistenceAdapter>
    <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
    </persistenceAdapter>

        在配置文件中的broker节点外增加以下代码

    <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="123456"/>
        <property name="maxActive" value="200"/>
        <property name="poolPreparedStatements" value="true"/>
    </bean>

      这样就算完成了mysql持久化配置了,验证方式同a,打开mysql数据库你能看到三张表,分别是:activemq_acks,activemq_lock,activemq_msgs。

         c.Oracle持久化

         oracle的配置和mysql一样,在Lib目录下,放入oracle的驱动包,然后配置一下配置文件即可。

      <bean id="derby-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:@localhsot:1521:orcl"/>
        <property name="username" value="activemq"/>
        <property name="password" value="amqadmin"/>
        <property name="maxActive" value="200"/>
        <property name="poolPreparedStatements" value="true"/>
      </bean>
  • 相关阅读:
    SurfaceView之绘制sin曲线
    双缓冲技术解决方案之二:内容不交叉时,可以增量绘制
    双缓冲技术解决方案之一:保存所有要绘制内容,全屏重绘
    双缓冲技术局部更新原理之派生自View
    双缓冲技术局部更新原理之派生自SurfaceView
    SurfaceView双缓冲技术引入
    SurfaceView动态背景效果实现
    SurfaceView概述和基本使用
    Bitmap添加水印效果
    Bitmap之compress图片压缩
  • 原文地址:https://www.cnblogs.com/zengweiming/p/5177015.html
Copyright © 2020-2023  润新知