1. 程式人生 > >五、ActiveMQ添加了mysql的持久化後,發了訊息,但是MSGS表中沒有記錄.

五、ActiveMQ添加了mysql的持久化後,發了訊息,但是MSGS表中沒有記錄.

1.持久化以後 activemq資料庫 會建立3張表<bean id="derby-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/activemq?relaxAutoCommit=true"/><property name="username" value="root"/>
<property name="password" value="root"/><property name="poolPreparedStatements" value="true"/></bean>


在 producer 生產者 中需要設定

      producer.setDeliveryMode(DeliveryMode.PERSISTENT);//            producer.setTimeToLive(10);
//            傳送
producer.send(textMessage);
//            producer.send(textMessage, DeliveryMode.PERSISTENT, 1, 60 * 60 * 24);

在consumer 消費者中 新增 注意 設定客戶端id 需要在開啟連結 前面 //設定客戶端id
//設定客戶端id
connection.setClientID("client-1");

connection.start();
//            final MessageConsumer messageConsumer = session.createConsumer(topic);//普通訂閱
MessageConsumer messageConsumer = session.createDurableSubscriber(topic,"bb"); //持久訂閱


程式碼:

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; /** * @author Yang * @create 2018-04-19 17:11 * 描述: 生產者 */ public class TopicProducer { /** * 使用者名稱 */ private static final String userName = ActiveMQConnection.DEFAULT_USER; /** * 密碼 */ private static final String passWord = ActiveMQConnection.DEFAULT_PASSWORD; /** * url */ private static final String brokerUrl = ActiveMQConnection.DEFAULT_BROKER_URL; public void send(String message) { try { ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, passWord, brokerUrl); final Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); //建立佇列 final Topic topic = session.createTopic("topic"); final MessageProducer producer = session.createProducer(topic); TextMessage textMessage = session.createTextMessage(message); producer.setDeliveryMode(DeliveryMode.PERSISTENT); // producer.setTimeToLive(10); // 傳送 producer.send(textMessage); // producer.send(textMessage, DeliveryMode.PERSISTENT, 1, 60 * 60 * 24); // session.commit(); producer.close();
session.close();
connection.close();
} catch (JMSException e) {
            e.printStackTrace();
}

    }

    public static void main(String[] args) {
        TopicProducer producer = new TopicProducer();
producer.send("hello world");
}


}

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
 * @author Yang
 * @create 2018-04-19 17:10
 * 描述: 消費者
*/
public class TopicConsumer {

    /**
     * 使用者名稱
*/
private static final String userName = ActiveMQConnection.DEFAULT_USER;
/**
     * 密碼
*/
private static final String passWord = ActiveMQConnection.DEFAULT_PASSWORD;
/**
     * url
     */
private static final String brokerUrl = ActiveMQConnection.DEFAULT_BROKER_URL;
    public void receive() {


        try {
            ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, passWord, brokerUrl);
            final Connection connection = connectionFactory.createConnection();
//設定客戶端id
connection.setClientID("client-1");
connection.start();
Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
//建立佇列
final Topic topic = session.createTopic("topic");
//            final MessageConsumer messageConsumer = session.createConsumer(topic);//普通訂閱
MessageConsumer messageConsumer = session.createDurableSubscriber(topic,"bb"); //持久訂閱
messageConsumer.setMessageListener(n -> {

                try {
                    TextMessage msg = (TextMessage) n;
                    final String text = msg.getText();
                    if (text.equalsIgnoreCase("hello world")) {
                        System.out.println("               接受資訊:         " + msg.getText());
} else {
                        System.out.println("     測試重發次數 ");
                        int i = 1 / 0;
}


                } catch (JMSException e) {
//                    e.printStackTrace();
}

            });
} catch (JMSException e) {
//            e.printStackTrace();
}

    }

    public static void main(String[] args) {
        TopicConsumer consumer = new TopicConsumer();
consumer.receive();
}


}

相關推薦

ActiveMQmysql持久化訊息但是MSGS沒有記錄.

1.持久化以後 activemq資料庫 會建立3張表<bean id="derby-ds" class="org.apache.commons.dbcp2.BasicDataSource" de

JPA自動使用@Table(name = "userTab")自動將列名下劃線的問題

hang auto server nic dialect rac serve com generate 一、問題   JPA中自動使用@Table(name = "userTab")後自動將表名、列名添加了下劃線的問題,如下圖:    二、解決   在app

SQL Server 2005的分區):一個分區

eat 查詢 sch 另一個 rom 原創 查看 copyto art 所謂天下大事,分久必合,合久必分,對於分區表而言也一樣。前面我們介紹過如何刪除(合並)分區表中的一個分區,下面我們介紹一下如何為分區表添加一個分區。 為分區表添加一個分區,這種情況是時常會

兩個Listbox刪除全部全部刪除

.cn 刪除 alt flag cti -1 move tex .com function moveOption(e1,e2,flag){ if(flag==false){ for(var i=0;i&

3主頁script代碼

else tab spa selected bsp exist get ebo tex 為Home控制器下的Index添加Scrip代碼,手動敲入script,按Tab鍵,頁面自動補齊<script></script> 1 <scrip

DOM練習 選擇框表格變色

inf ble 技術分享 刪除行 屬性 bsp 點擊 round ack 多個選擇框,三個按鈕,顯示:全選、反選、不選 html部分,建立五個多選框,三個按鈕 <input type="checkbox"> <input type="checkbox"&

【17】有關python面向對象編程的提高【多繼承多態類屬性動態與限制屬性與方法@property】

爸爸 mce turn object get 寫法 pri import sel 一、多繼承 案例1:小孩繼承自爸爸,媽媽。在程序入口模塊再創建實例調用執行 #father模塊 class Father(object): def __init__(self,mon

如何在Eclipse 編輯 自動註釋(轉有部分修改)

如果你用的是eclipse3.2,方法如下,其他版本方法類似。   通過選單 Window->Preference 開啟引數設定面板,然後選擇:Java -> Code Style -> Code     Templates 在右側選擇Comments,將其中的Files項,然後選右邊

eclipse離線約束使不聯網也能有一些代碼的提示例如dubbo

ati height type pre 目錄 提示 dubbo oca enc eclipse添加離線約束,使不聯網也能有一些代碼的提示,例如dubbo 1、將dubbo.xsd文件放到一個無中文目錄下 2、eclipse->windows->prefere

Linux下自定義腳本到開機自啟動標準rpm舉例:設置Apache自啟動

不同 config desc 完全 def chkconfig mod etc chm 寫一個腳本,名字為:autostart.sh,放在/etc/init.d/目錄下,賦予權限chmod +x /etc/init.d/autostart.sh 代碼如下 #!/bin/sh

OAF 供應商門戶功能標簽獲取當前供應商VendorId的方法

管理 method cin ppi ray 方法 user number text 一種是參考管理頁面 /oracle/apps/pos/supplier/webui/SuppDtPG 在目標頁面的AM中添加VO實例,oracle.apps.pos.supplier.ser

FastAdmin 新字段不顯示可以直接去修改對應的js

bsp info fas bubuko min 添加 圖片 http 分享 FastAdmin 添加新字段後,不顯示,可以直接去修改對應的js

解決CentOS新網卡找不到網卡配置文件

圖片 ifcfg ifconf 沒有 net entos src info 虛擬   使用VMware Workstation虛擬機安裝好CentOS6.5以後,電腦的IP總是會變,在網上找的方法都是改電腦網卡的配置文件,但是網卡是由IP的,查找過後發現沒有對應網卡的配置文

mysql 匯入excel資料成功,資料80%資料都變成2147483647解決方案

       在網上搜索了一下原因:被插入的mysql資料表的欄位型別為int(11),問題就是欄位型別長度不過,導致插入錯誤。 解決方案:(1)把欄位的型別int改為varchar(255) (如果允許的情況),這是我自己當時的做法                  (2

php+mysql模擬隊列送郵件能不能見網友就靠這封郵件

丟失 模式 base64 郵件隊列 一致性 缺少 出現 外部程序 功能 郵件發送原理 telnet命令模擬郵件發送:1、cmd命令下telnet連接上QQ的smtp服務器telnet smtp.163.com 25遇到問題以及解決辦法: telnet命令錯誤 控制面板下wi

面試官你好我已經掌握MySQL主從配置和讀寫分離你看我還有機會嗎?

> 我是風箏,公眾號「古時的風箏」,一個簡單的程式設計師鼓勵師。 文章會收錄在 [JavaNewBee](https://github.com/huzhicheng/JavaNewBee) 中,更有 Java 後端知識圖譜,從小白到大牛要走的路都在裡面。 面試官:我看你簡歷上寫的你們公司資料庫是 MySQL

MYSQL操作數據記錄

mysql操作數據表中的記錄1 把選中的列數名到最前面ALTER TABCE 表名 MODIFY 列數名以及列數名的類型 FIRST;2 修改列數名類型ALTERTABCE 表名 MODIFY 列數名新列數名;3 修改數據表名第一種 ALTERTABCE 原表名 RENAME 新表名;第二種 RENAME

MySQL--操作數據記錄小結

log mage 分組 技術 rom ges sql alt image 最常用,最復雜的語句: 每一項的: 表的參照 From 條件 WHERE 進行記錄的分組 GROUP BY 分組的時候對分組的條件進行設定 HAVING 對結果進行排序 ORD

簡單按日期查詢mysql某張記錄

unsigned 計劃 表結構 記錄 create sig 站點 signed using 測試表表結構:mysql> show create table dr_stats\G 1. row Table: dr_stats Create Table: