RabbitMQ的安裝及簡單使用

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? RabbitMQ 安裝(linux):

1.安裝Erlang-----------------------------------------

RabbitMQ是基于erlang語言進行開發(fā)的褐桌,所以安裝RabbitMQ之前需要先安裝erlang語言

????1.1安裝erlang前先安裝Linux依賴庫:-------------------

????[if !supportLists]1.?[endif]yum -y install make gcc gcc-c++ kernel-devel ????m4 ncurses-devel openssl-devel

????1.2?解壓erlang壓縮包文件:-------------------

? ? ? ? ? ?tar -zxvf otp_src_21.2.tar.gz?-C /usr/local

????1.3配置-------------------

? (需要切換到解壓目錄下進行操作cd otp_src_21.2)

????然后輸入./configure

????然后回車(進行配置的時候需要一定的時間)

????1.4編譯-------------------

? (執(zhí)行的時候需要一定的時間)

????配置完成之后直接輸入命令:make

????1.5安裝-------------------

? ? (執(zhí)行的時候需要一定的時間)

????編譯完成之后直接輸入命令:make install

????1.6刪除安裝包-------------------

? (可以執(zhí)行也可以不執(zhí)行)

? ? rm -rf otp_src_21.2

????1.7驗證erlang是否安裝成功-------------------

? ? ? ? ? 在命令行輸入:erl如果進入了編程命令行則? ? ? ? ? ? ?表示安裝成功龙亲,

? ? ? ? ? 然后按ctrl + z 退出編程命令行;

2.安裝RabbtiMQ-----------------------------------------

????2.1解壓RabbitMQ的壓縮包:-------------------

????tar -xvf rabbitmq-server-generic-unix-3.8.0.tar.xz ?-C /usr/local/

????.tar.xz文件解壓后就可以使用了聪建,無需再編譯安裝;

????切換到安裝目錄的sbin目錄下:-------------------

????2.2.啟動RabbitMQ----------------------

?????./rabbitmq-server -detached

? ? ?-detached表示后臺啟動

? ? ?如果后臺啟動的時候報錯:

? ? ?解決方案:

? ? ?進入

? ? ?vim /etc/hosts(添加一行映射?映射當前服務器的ip地址與當前的主機host? ? ? ? 名字)

? ? ?注意:為什么這里寫的ip地址是192.168.65.131

? ? ?因為當前rabbitmq需要在這臺服務器上使用

? ? ?為什么空格后面對應的內(nèi)容寫zookeeper

? ? ?因為當前這臺服務器的hostname配置是zookeeper

? ? ?如何查看當前服務器的hostname的配置

? ? ?使用命令?cat?/etc/hostname

? ? ?2.3啟動后臺web管理功能(需要切換到sbin目錄下執(zhí)行)-------

? ? ?????./rabbitmq-plugins enable rabbitmq_management

? ? ? ?然后通過http://192.168.65.131:15672訪問默認

? ? ? ?用戶guest锦溪、密碼 guest参萄,

????????登錄會提示User can only log in via localhost

????????這里提示guest用戶只能在本地登錄累驮,這個時候我們遠程訪問需要自己添? ? ? ? ? 加用戶和相應的權(quán)限。

????????添加用戶:./rabbitmqctl add_user admin admin

????????這句話的意思是添加一個用戶?賬號是admin?密碼是admin

????????添加權(quán)限:./rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

????????這句的意思是給所有的虛擬機主機添加所有的權(quán)限

????????修改用戶角色:./rabbitmqctl set_user_tags admin administrator

????????這句話的意思是給admin添加一個標簽 標簽是administrator

????????然后使用admin進行登錄即可:

????????2.4關(guān)閉rabbitmq服務器(切換到sbin目錄下執(zhí)行):-------------------

? ????????./rabbitmqctl shutdown

????????2.5關(guān)閉后臺web管理功能?:-------------------

????????./rabbitmq-plugins disable rabbitmq_management


RabbitMQ部分內(nèi)容參考了:?https://www.sojson.com/blog/48.html

---------------------------------------------------------------------------------

? ??????????????????????RabbitMQ提供方上傳消息流程

1.啟動后臺web管理功能(需要切換到sbin目錄下執(zhí)行)-------------------

./rabbitmq-plugins enable rabbitmq_management

2.在需要使用RabbitMQ的API項目中導入依賴----------------------

<dependency>

<groupId>com.rabbitmq</groupId>

<artifactId>amqp-client</artifactId>

<version>5.8.0</version>

</dependency>

3.創(chuàng)建連接工廠---------------------------------------------------

?ConnectionFactory connectionFactory = new ConnectionFactory();

4.設(shè)置RabbitMQ安裝的服務器的地址--------------------------------

connectionFactory.setHost("192.168.80.3");

5.設(shè)置RabbitMQ的端口號----------------------------------------

connectionFactory.setPort(5672);

6.設(shè)置登錄用戶和密碼---------------------------------------

connectionFactory.setUsername("admin");? ? ? ? ??

?connectionFactory.setPassword("admin");

7.設(shè)置指定虛擬機:/為默認-----------------------------------

? ? ? ? connectionFactory.setVirtualHost("/");

8.創(chuàng)建與RabbitMQ服務的TCP鏈接-----------------------------

? connection = connectionFactory.newConnection();

9.創(chuàng)建于Exchange的通道,每個連接可以創(chuàng)建多個通道,每個通道代表一個會話任務----------------------------------------------------------

?channel = connection.createChannel();

10./*----------------------------------------------------------

? ? * 聲明隊列:如果RabbitMQ中沒有此隊列將自動創(chuàng)建

? ? * param1:隊列的名稱

? ? * param2:是否持久化(rabbit重啟后,該隊列是否還存在)

? ? * param3:隊列是否獨占此鏈接(其他隊列不能使用此鏈接)

? ? * param4:隊列不再使用時是否自動刪除此隊列

? ? * param5:隊列參數(shù)(通常不需要)

? ? * */

? ? ? ? ? ? channel.queueDeclare("zhengxixi",true,false,false,null);

? ?11.編寫要輸送的消息------------------------------------------

? ? ? ? ? ? String data ="來自提供方的鄭茜茜"+System.currentTimeMillis();

? ?12./*--------------------------------------------------------

? ? * 消息發(fā)布

? ? * param1:Exchange的名稱,如果沒有指定,則使用Default Exchange

? ? * param2:routingKey,消息的路由Key,是由于Exchange(交換機)將消息發(fā)送到指定的消息隊列

? ? * param3:消息包含的屬性(通常不需要)

? ? * param4:消息體(需要轉(zhuǎn)成字節(jié)數(shù)組)

? ? *

? ? * 這里沒有定義交換機,消息將發(fā)送給默認交換機,每個隊列也會綁定那個默認的交換機,但是不能是不綁定或解除綁定

? ? * */

? ? ? ? ? ? channel.basicPublish("","zhengxixi",null,data.getBytes());

? ? ? ? ? ? System.out.println("向RabbitMQ上傳消息:"+data);

? 13.發(fā)送完之后就把資源都關(guān)閉了,不關(guān)閉的話會一直在這里浪費資源----------? ? ? ? ? ? ? ? ? if (channel!=null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? channel.close();

? ? ? ? ? ? }

? ? ? ? ? ? if(connection!=null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? connection.close();

? ? ? ? ? ? }

---------------------------------------------------------

? ? ? ? ? ? ? ? ? ? ? ?RabbitMQ提供方上傳消息流程

1. 創(chuàng)建連接工廠-----------------------------------------

?ConnectionFactory connectionFactory = new ConnectionFactory();

2.設(shè)置RabbitMQ安裝的服務器的地址---------------------

connectionFactory.setHost("192.168.80.3");

3.設(shè)置RabbitMQ的端口號---------------------------

connectionFactory.setPort(5672);

4.設(shè)置登錄用戶和密碼--------------------------------------

connectionFactory.setUsername("admin");

connectionFactory.setPassword("admin");

5.設(shè)置指定虛擬機:/為默認------------------------------??

? connectionFactory.setVirtualHost("/");

6.創(chuàng)建與RabbitMQ服務的TCP鏈接------------------------------------

connection = connectionFactory.newConnection();

7.創(chuàng)建于Exchange的通道,每個連接可以創(chuàng)建多個通道,每個通道代表一個會話任務---------------------------------------------------------

? ?channel = connection.createChannel();

8./*-------------------------------------------------

? * 聲明隊列:如果RabbitMQ中沒有此隊列將自動創(chuàng)建

? * param1:隊列的名稱

? * param2:是否持久化(rabbit重啟后,該隊列是否還存在)

? * param3:隊列是否獨占此鏈接(其他隊列不能使用此鏈接)

? * param4:隊列不再使用時是否自動刪除此隊列

? * param5:隊列參數(shù)(通常不需要)

? * */

? channel.queueDeclare("zhengxixi", true, false, false, null);

9.實現(xiàn)消費的方法------------------------------------------

? DefaultConsumer defaultConsumer = new DefaultConsumer(channel)

? {

? ? ? ? ? ? /***

? ? ? ? ? ? * 當接收到消息后此方法將被調(diào)用

? ? ? ? ? ? * @param consumerTag 消費者標簽,用于標識消費者的,在監(jiān)聽隊列時設(shè)置channel,basicConsume(可以不設(shè)置)

? ? ? ? ? ? * @param envelope 信封,通過envelope

? ? ? ? ? ? * @param properties 消息屬性

? ? ? ? ? ? * @param body 消息內(nèi)容

? ? ? ? ? ? * @throws IOException

? ? ? ? ? ? */

? ? ? @Override

? ? ? public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException

? ? ? {

? ? ? ? ? ? ? //獲取交換機

? ? ? ? ? ? ? String exchange = envelope.getExchange();

? ? ? ? ? ? ? //消息id,MQ在channel中用來標識消息的id,可用于確認消息已接受

? ? ? ? ? ? ? long deliveryTag = envelope.getDeliveryTag();

? ? ? ? ? ? ? //接收到的消息的內(nèi)容

? ? ? ? ? ? ? String data = new String(body, "UTF-8");

? ? ? ? ? ? ? System.out.println("從客戶端獲取到數(shù)據(jù)為:"+data);

? ? ? }

? ? };

10.調(diào)用實現(xiàn)消費的方法獲取數(shù)據(jù)(監(jiān)聽隊列)-------------------------

/***

? ? * 參數(shù):String queue , boolean autoAck , Consumer callback

? ? * 參數(shù)明細:

? ? * 1:queue:隊列名稱

? ? * 2.autoAck:自動回復,當消費者接收到消息后要告訴MQ消息已接收,

? ? *? 如果將此參數(shù)設(shè)置為true表示會自動回復MQ,如果設(shè)置為false要通過編程實現(xiàn)回復

? ? * 3.callback:消費方法,當消費者接收到消息,需要執(zhí)行的方法

? ? */

? ? channel.basicConsume("zhengxixi", true, defaultConsumer);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舵揭,一起剝皮案震驚了整個濱河市谤专,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌午绳,老刑警劉巖置侍,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拦焚,居然都是意外死亡蜡坊,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門赎败,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秕衙,“玉大人,你說我怎么就攤上這事僵刮【萃” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵搞糕,是天一觀的道長若河。 經(jīng)常有香客問我,道長寞宫,這世上最難降的妖魔是什么萧福? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮辈赋,結(jié)果婚禮上鲫忍,老公的妹妹穿的比我還像新娘。我一直安慰自己钥屈,他們只是感情好悟民,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著篷就,像睡著了一般射亏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竭业,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天智润,我揣著相機與錄音,去河邊找鬼未辆。 笑死窟绷,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的咐柜。 我是一名探鬼主播兼蜈,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼攘残,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了为狸?” 一聲冷哼從身側(cè)響起歼郭,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辐棒,沒想到半個月后实撒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡涉瘾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捷兰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片立叛。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贡茅,靈堂內(nèi)的尸體忽然破棺而出秘蛇,到底是詐尸還是另有隱情,我是刑警寧澤顶考,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布赁还,位于F島的核電站,受9級特大地震影響驹沿,放射性物質(zhì)發(fā)生泄漏艘策。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一渊季、第九天 我趴在偏房一處隱蔽的房頂上張望朋蔫。 院中可真熱鬧,春花似錦却汉、人聲如沸驯妄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽青扔。三九已至,卻和暖如春翩伪,著一層夾襖步出監(jiān)牢的瞬間微猖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工缘屹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留励两,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓囊颅,卻偏偏與公主長得像当悔,于是被迫代替她去往敵國和親傅瞻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

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

  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981閱讀 15,941評論 2 11
  • 什么叫消息隊列盲憎? 消息(Message)是指在應用間傳送的數(shù)據(jù)嗅骄。消息可以非常簡單,比如只包含文本字符串饼疙,也可以更復...
    Agile_dev閱讀 2,377評論 0 24
  • 1.RabbitMQ概述 簡介: MQ全稱為Message Queue溺森,消息隊列是應用程序和應用程序之間的通信方法...
    梁朋舉閱讀 49,788評論 0 47
  • 本文章翻譯自http://www.rabbitmq.com/api-guide.html,并沒有及時更新窑眯。 術(shù)語對...
    joyenlee閱讀 7,668評論 0 3
  • 一屏积、RibbitMQ的基礎(chǔ)介紹 1. 為什么要使用MQ2. 與其他MQ的區(qū)別 ActiveMQ:使用Java開發(fā),...
    団長大人閱讀 815評論 0 0