Windows下安裝RabbitMQ

1.Windows下安裝RabbitMQ需要以下幾個步驟

(1):下載erlang镰绎,原因在于RabbitMQ服務(wù)端代碼是使用并發(fā)式語言erlang編寫的声登,下載地址:http://www.erlang.org/downloads篡帕,雙擊.exe文件進行安裝就好屑迂,安裝完成之后創(chuàng)建一個名為ERLANG_HOME的環(huán)境變量瑞驱,其值指向erlang的安裝目錄竿音,同時將%ERLANG_HOME%\bin加入到Path中和屎,最后打開命令行,輸入erl春瞬,如果出現(xiàn)erlang的版本信息就表示erlang語言環(huán)境安裝成功柴信;

(2):下載RabbitMQ,下載地址:http://www.rabbitmq.com/宽气,同樣雙擊.exe進行安裝就好(這里需要注意一點随常,默認的安裝目錄是C:/Program Files/....,這個目錄中是存在空格符的萄涯,我們需要改變安裝目錄绪氛,貌似RabbitMQ安裝目錄中是不允許有空格的,我之前踩過這個大坑)涝影;

(3):安裝RabbitMQ-Plugins枣察,這個相當(dāng)于是一個管理界面,方便我們在瀏覽器界面查看RabbitMQ各個消息隊列以及exchange的工作情況燃逻,安裝方法是:打開命令行cd進入rabbitmq的sbin目錄(我的目錄是:E:\software\rabbitmq\rabbitmq_server-3.6.5\sbin)序目,輸入:rabbitmq-plugins enable rabbitmq_management命令,稍等會會發(fā)現(xiàn)出現(xiàn)plugins安裝成功的提示伯襟,默認是安裝6個插件猿涨,如果你在安裝插件的過程中出現(xiàn)了下面的錯誤:

[圖片上傳失敗...(image-f5443b-1530373284419)]

解決方法是:首先在命令行輸入:rabbitmq-service stop,接著輸入rabbitmq-service remove逗旁,再接著輸入rabbitmq-service install嘿辟,接著輸入rabbitmq-service start,最后重新輸入rabbitmq-plugins enable rabbitmq_management試試片效,我是這樣解決的红伦;

(4):插件安裝完之后,在瀏覽器輸入http://localhost:15672進行驗證淀衣,你會看到下面界面昙读,輸入用戶名:guest,密碼:guest你就可以進入管理界面膨桥,當(dāng)然用戶名密碼你都可以變的蛮浑;

[圖片上傳失敗...(image-80923b-1530373284417)]

2.安裝完RabbitMQ之后唠叛,我們先來簡單了解下RabbitMQ中涉及到的幾個概念

producer:消息生產(chǎn)者

consumer:消息消費者

virtual host:虛擬主機,在RabbitMQ中沮稚,用戶只能在虛擬主機的層面上進行一些權(quán)限設(shè)置艺沼,比如我可以訪問哪些隊列,我可以處理哪些請求等等蕴掏;

 broker:消息轉(zhuǎn)發(fā)者障般,也就是我們RabbitMQ服務(wù)端充當(dāng)?shù)墓δ芰耍敲聪⑹前凑帐裁匆?guī)則進行轉(zhuǎn)發(fā)的呢盛杰?需要用到下面幾個概念挽荡;

 exchange:交換機,他是和producer直接進行打交道的即供,有點類似于路由器的功能定拟,主要就是進行轉(zhuǎn)發(fā)操作的唄,那么producer到底用哪個exchange進行路由呢逗嫡?這個取決于routing key(路由鍵)青自,每個消息都有這個鍵,我們也可以自己設(shè)定驱证,其實就是一字符串性穿;

 queue:消息隊列,用于存放消息雷滚,他接收exchange路由過來的消息,我們可以對隊列內(nèi)容進行持久化操作吗坚,那么queue到底接收那個exchange路由的消息呢祈远?這個時候就要用到binding key(綁定鍵)了,綁定鍵會將隊列和exchange進行綁定商源,至于綁定方式车份,RabbitMQ提供了多種方式,大家可以看看鴻洋大神的RabbitMQ博客系列([點擊查看](http://blog.csdn.net/lmj623565791/article/category/2386657))牡彻;

 以上就是RabbitMQ涉及到的一些概念了扫沼,用一張圖表示這些概念之間的關(guān)系就是:

[圖片上傳失敗...(image-fe7661-1530373284417)]

3.RabbitMQ簡單使用

producer(生產(chǎn)者)端步驟:

(1):創(chuàng)建ConnectionFactory,并且設(shè)置一些參數(shù)庄吼,比如hostname,portNumber等等

(2):利用ConnectionFactory創(chuàng)建一個Connection連接

(3):利用Connection創(chuàng)建一個Channel通道

(4):創(chuàng)建queue并且和Channel進行綁定

(5):創(chuàng)建消息缎除,并且發(fā)送到隊列中

 注意,在我們當(dāng)前的例子中总寻,并沒有用到exchange交換機器罐,RabbitMQ默認情況下是會創(chuàng)建一個空字符串名字的exchange的,如果我們沒有創(chuàng)建自己的exchange的話渐行,默認就是使用的這個exchange轰坊;

 producer端代碼:
public class Sender {   private final static String QUEUE_NAME = "MyQueue";     public static void main(String[] args) {        send(); }       public static void send()   {       ConnectionFactory factory = null;       Connection connection = null;       Channel channel = null;     try {           factory = new ConnectionFactory();          factory.setHost("localhost");           connection = factory.newConnection();           channel = connection.createChannel();           channel.queueDeclare(QUEUE_NAME, false, false, false, null);            String message = "my first message .....";          channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8"));          System.out.println("已經(jīng)發(fā)送消息....."+message);      } catch (IOException e) {           e.printStackTrace();        } catch (TimeoutException e) {          e.printStackTrace();        }finally{           try {               //關(guān)閉資源              channel.close();                connection.close();         } catch (IOException e) {               e.printStackTrace();            } catch (TimeoutException e) {              e.printStackTrace();            }       }   }}

consumer(消費者)端步驟:

 (1):創(chuàng)建ConnectionFactory铸董,并且設(shè)置一些參數(shù),比如hostname,portNumber等等

 (2):利用ConnectionFactory創(chuàng)建一個Connection連接

 (3):利用Connection創(chuàng)建一個Channel通道

 (4):將queue和Channel進行綁定肴沫,注意這里的queue名字要和前面producer創(chuàng)建的queue一致

 (5):創(chuàng)建消費者Consumer來接收消息粟害,同時將消費者和queue進行綁定

 consumer端代碼:
public class Receiver { private final static String QUEUE_NAME = "MyQueue";     public static void main(String[] args) {        receive();  }       public static void receive()    {       ConnectionFactory factory = null;       Connection connection = null;       Channel channel = null;             try {           factory = new ConnectionFactory();          factory.setHost("localhost");           connection = factory.newConnection();           channel = connection.createChannel();           channel.queueDeclare(QUEUE_NAME, false, false, false, null);            Consumer consumer = new DefaultConsumer(channel){               @Override               public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,                       byte[] body) throws IOException {                   System.out.println("11111111111");                  String message = new String(body, "UTF-8");                 System.out.println("收到消息....."+message);                }};         channel.basicConsume(QUEUE_NAME, true,consumer);        } catch (IOException e) {           e.printStackTrace();        } catch (TimeoutException e) {          e.printStackTrace();        }finally{           try {               //關(guān)閉資源              channel.close();                connection.close();         } catch (IOException e) {               e.printStackTrace();            } catch (TimeoutException e) {              e.printStackTrace();            }       }   }}

好了,這篇先到這了颤芬,下一篇我會簡單介紹點更深入的東西悲幅,后續(xù)也會對RabbitMQ原生API進行封裝,便于我們自己開發(fā)驻襟;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夺艰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沉衣,更是在濱河造成了極大的恐慌郁副,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豌习,死亡現(xiàn)場離奇詭異存谎,居然都是意外死亡,警方通過查閱死者的電腦和手機肥隆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門既荚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人栋艳,你說我怎么就攤上這事恰聘。” “怎么了吸占?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵晴叨,是天一觀的道長。 經(jīng)常有香客問我矾屯,道長兼蕊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任件蚕,我火速辦了婚禮孙技,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘排作。我一直安慰自己牵啦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布纽绍。 她就那樣靜靜地躺著蕾久,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僧著,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天履因,我揣著相機與錄音,去河邊找鬼盹愚。 笑死栅迄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的皆怕。 我是一名探鬼主播毅舆,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼愈腾!你這毒婦竟也來了憋活?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤虱黄,失蹤者是張志新(化名)和其女友劉穎悦即,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橱乱,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡辜梳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泳叠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片作瞄。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖危纫,靈堂內(nèi)的尸體忽然破棺而出宗挥,到底是詐尸還是另有隱情,我是刑警寧澤种蝶,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布属韧,位于F島的核電站,受9級特大地震影響蛤吓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糠赦,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一会傲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拙泽,春花似錦淌山、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荷荤,卻和暖如春退渗,著一層夾襖步出監(jiān)牢的瞬間移稳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工会油, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留个粱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓翻翩,卻偏偏與公主長得像都许,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嫂冻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

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