ActiveMQ的簡單使用

簡單的搭建一個ActiveMQ的學習Demo

參考:消息隊列之異步消息的基本概念以及ActiveMQ整合Spring的常用用法介紹

本篇主要內(nèi)容:
1供鸠、ActiveMQ安裝
2莺掠、隊列(queue)
3春贸、主題(topic)

ActiveMQ安裝##

1、下載:

http://activemq.apache.org/download.html

選擇最新穩(wěn)定版
選擇平臺版本

2、安裝:
我下載的是windows版本的,解壓趣倾。然后雙擊apache-activemq-5.14.3\bin\win64\activemq.bat即可

3、訪問:
http://127.0.0.1:8161/admin/ 用戶名/密碼:admin/admin

隊列(queue)##

即一個消息只能被一個消費者消費某饰。

1儒恋、進入web管理界面

Qeuees

這里看到隊列里是沒有任何消息的

2、編寫消息生產(chǎn)者
第一步黔漂,引入jar

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-client</artifactId>
    <version>5.14.3</version>
</dependency>

第二步诫尽,編寫消息生產(chǎn)者

package queues;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
/**
 * 消息生產(chǎn)者
 */
public class JMSProducer {
    //默認連接用戶名
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
    //默認連接密碼
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
    //默認連接地址
    private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL;

    public static void main(String[] args) {
        //連接工廠
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);

        try {
            //連接
            Connection connection = connectionFactory.createConnection();
            //啟動連接
            connection.start();
            //創(chuàng)建session
            Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
            //消息目的地
            Destination destination = session.createQueue("hello");
            //消息生產(chǎn)者
            MessageProducer producer = session.createProducer(destination);
            //設(shè)置不持久化,此處學習炬守,實際根據(jù)項目決定
            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

            //發(fā)送消息
            for (int i = 0; i < 10; i++) {
                //創(chuàng)建一條文本消息
                TextMessage message = session.createTextMessage("ActiveMQ:這是第 " + i + " 條消息");
                //生產(chǎn)者發(fā)送消息
                producer.send(message);
            }

            session.commit();
            session.close();
            connection.close();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

這里創(chuàng)建了名為“hello”的消息隊列牧嫉,并向消息隊列發(fā)送10條消息。

第三步减途,編寫消息消費者

package queues;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * 消息消費者
 */
public class JMSConsumer {
    //默認連接用戶名
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
    //默認連接密碼
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
    //默認連接地址
    private static final String BROKER_URL = ActiveMQConnection.DEFAULT_BROKER_URL;

    public static void main(String[] args) {
        //連接工廠
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, BROKER_URL);
        try {
            //連接
            Connection connection = connectionFactory.createConnection();
            //啟動連接
            connection.start();
            //創(chuàng)建session
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //消息目的地
            Destination destination = session.createQueue("hello");
            //消息消費者
            MessageConsumer consumer = session.createConsumer(destination);
            while (true) {
                TextMessage message = (TextMessage) consumer.receive();
                if (message != null) {
                    System.out.println("接收到消息: " + message.getText());
                } else {
                    break;
                }
            }
            session.close();
            connection.close();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

這里指向名為“hello”的消息隊列酣藻,并向消息隊列一直取消息出來。

3观蜗、測試臊恋。

先運行消息生產(chǎn)者。

queues

發(fā)現(xiàn)比之前多了一個名為hello的消息隊列墓捻,并有10條消息進入隊列了抖仅。

運行消息消費者

消息消費者打印的消息

發(fā)現(xiàn)消費者消費了之前發(fā)的10個消息。

再次查看web-queues頁面砖第。

queues

發(fā)現(xiàn)比之前多了一個消費者撤卢,而且有10條消息出隊列了。

再啟動一個消息消費者

2個消費者

發(fā)現(xiàn)控制臺沒打印梧兼,說明隊列里的消息已經(jīng)被消費完了放吩。

再次啟動消息生產(chǎn)者

1.gif

發(fā)現(xiàn)2個消費者各消費5條消息,說明隊列里的消息只容許被一個消費者消費羽杰。

此時渡紫,web-queues頁面應該是有2個消費者到推,共生成和消費20條消息。

queues

主題(topic)##

即一個消息可以被多個消費者接收

只需要將隊列中的如下代碼

//消息目的地
Destination destination = session.createQueue("hello");

改為

//消息目的地
Destination destination = session.createTopic("hello");

查看web-topics,如下:

topics

啟動2個消費者惕澎,然后啟動生產(chǎn)者
查看web-topics,如下:

topics
消費者打印消息.gif

發(fā)現(xiàn)2個消費者都消費了這10條消息莉测。

現(xiàn)在我們基本完成簡單的使用ActiveMQ了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唧喉,一起剝皮案震驚了整個濱河市捣卤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌八孝,老刑警劉巖董朝,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異干跛,居然都是意外死亡子姜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門驯鳖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闲询,“玉大人,你說我怎么就攤上這事浅辙∨せ。” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵记舆,是天一觀的道長鸽捻。 經(jīng)常有香客問我,道長泽腮,這世上最難降的妖魔是什么御蒲? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮诊赊,結(jié)果婚禮上厚满,老公的妹妹穿的比我還像新娘。我一直安慰自己碧磅,他們只是感情好碘箍,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鲸郊,像睡著了一般丰榴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秆撮,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天四濒,我揣著相機與錄音,去河邊找鬼。 笑死盗蟆,一個胖子當著我的面吹牛戈二,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喳资,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼挽拂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骨饿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤台腥,失蹤者是張志新(化名)和其女友劉穎宏赘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體黎侈,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡察署,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了峻汉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贴汪。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖休吠,靈堂內(nèi)的尸體忽然破棺而出扳埂,到底是詐尸還是另有隱情,我是刑警寧澤瘤礁,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布阳懂,位于F島的核電站,受9級特大地震影響柜思,放射性物質(zhì)發(fā)生泄漏岩调。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一赡盘、第九天 我趴在偏房一處隱蔽的房頂上張望号枕。 院中可真熱鬧,春花似錦陨享、人聲如沸葱淳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛙紫。三九已至,卻和暖如春途戒,著一層夾襖步出監(jiān)牢的瞬間坑傅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工喷斋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留唁毒,地道東北人蒜茴。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像浆西,于是被迫代替她去往敵國和親粉私。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理近零,服務發(fā)現(xiàn)诺核,斷路器,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 1久信、前言 之前我們通過兩篇文章(架構(gòu)設(shè)計:系統(tǒng)間通信(19)——MQ:消息協(xié)議(上)窖杀、架構(gòu)設(shè)計:系統(tǒng)間通信(20)...
    境里婆娑閱讀 1,870評論 0 4
  • ActiveMQ 即時通訊服務 淺析http://www.cnblogs.com/hoojo/p/active_m...
    bboymonk閱讀 1,481評論 0 11
  • ActiveMQ入門教程 本博客內(nèi)容皆為網(wǎng)絡(luò)搜集而來,不保證任何版權(quán)問題裙士,不保證長期有效性(即具有時效性)入客,如有侵...
    龍圣賢閱讀 33,940評論 6 48
  • 參加一個月的為期30天的每日一畫的畫畫群再有幾天就結(jié)束了。 群里還有小伙伴還要繼續(xù)參加腿椎,同組的一個醫(yī)生qq已經(jīng)參加...
    紅袖飛揚閱讀 368評論 0 1