ActiveMQ Topic持久化訂閱

MQ學習系列:html

  1. 消息隊列概念與認知
  2. ActiveMQ Topic消息重發
  3. ActiveMQ Topic 消息持久化訂閱
  4. zookeeper+ActiveMQ集羣實現高可用

1、持久化到文件(默認)

第一步:在${activemq.base}/conf/activemq.xml文件中配置持久化適配器。java

<!--
    Configure message persistence for the broker. The default persistence
    mechanism is the KahaDB store (identified by the kahaDB tag).
    For more information, see:
    http://activemq.apache.org/persistence.html
-->
<persistenceAdapter>
    <kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>

以上配置爲默認,文件地址爲E:\ActiveMQ\apache-activemq-5.15.8\data\kahadb目錄下。mysql

第二步:發送消息時代碼sql

//參數:消息, 持久化/不持久化,優先級,存儲時長ms
producer.send(message,DeliveryMode.PERSISTENT,1,1000*60*5);

咱們看看DeliveryMode這個類是什麼鬼?數據庫

// IntelliJ API Decompiler stub source generated from a class file
// Implementation of methods is not available

package javax.jms;

public interface DeliveryMode {
    int NON_PERSISTENT = 1;
    int PERSISTENT = 2;
}

第三步:消息訂閱者建立消費對象時apache

  • connection start()前添加客戶端id
//設置客戶端id
 connection.setClientID("client-1");
  • 建立客戶端持久化訂閱customer
//客戶端持久化訂閱
TopicSubscriber consumer = session.createDurableSubscriber(topic, "client1-sub");

通過如上三步,咱們即可以經過文件來持久化咱們的Topic訂閱。session

2、持久化到數據庫(mysql)

第一步:將MySQL的數據庫驅動複製到ActiveMQ的lib目錄下。ide

第二步:在${activemq.base}/conf/activemq.xml文件中配置持久化配置。學習

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

第三步:在${activemq.base}/conf/activemq.xml文件中配置數據源。url

<bean id="mysql-ds" class="org.apache.commons.dbcp2.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="poolPreparedStatements" value="true"/>
</bean>

配置完成啓動程序,系統自動生成三張表;

具體表結構參考 這裏

相關文章
相關標籤/搜索