RabbitMq的官方文檔翻譯(教程1)

Introduction

RabbitMq接收并傳遞消息,你可以把它當(dāng)做一個(gè)郵局。當(dāng)你把信件放到郵箱里的時(shí)候,你能確定會(huì)有郵遞員最終會(huì)正確遞送你的郵件。RabbitMq就是一個(gè)郵箱、一個(gè)郵局和一個(gè)郵遞員。


生產(chǎn)者

在RabbitMq里,一個(gè)隊(duì)列就代表一個(gè)郵箱。雖然消息流經(jīng)RbbitMq和你的應(yīng)用,但是消息只能被存在隊(duì)列里。隊(duì)列只會(huì)被服務(wù)器的內(nèi)存和磁盤所限制,本質(zhì)上就是一個(gè)大的消息緩沖區(qū)。一個(gè)隊(duì)列可以接收多個(gè)生產(chǎn)者的消息,也可以被多個(gè)消費(fèi)者所接收。


隊(duì)列

消費(fèi)者接收隊(duì)列里的消息。


消費(fèi)者

在這個(gè)教程中,我們會(huì)寫兩個(gè)程序,一個(gè)生產(chǎn)者程序,發(fā)送一個(gè)消息,一個(gè)消費(fèi)者程序,接收消息并把它們打印出來。


發(fā)送消息


發(fā)送消息

Sending

Send是消息發(fā)送者,Recv是消息接受者。

Send.java代碼如下


引入類庫(kù)


設(shè)置隊(duì)列名稱

然后我們就可以創(chuàng)建一個(gè)連接了。


創(chuàng)建連接

這個(gè)連接抽象了套接字連接,負(fù)責(zé)了協(xié)議版本的轉(zhuǎn)換和身份驗(yàn)證,等等。我們用本地機(jī)器作為服務(wù)器,所以host是localhost,如果我們想要使用其他機(jī)器的話,我們可以直接寫主機(jī)的IP地址或者域名。

然后我們創(chuàng)建一個(gè)信道(Channel),也是大部分API調(diào)用入口。為了發(fā)送消息,我們必須先聲明一個(gè)隊(duì)列。


聲明隊(duì)列

聲明隊(duì)列這個(gè)操作是冪等的——他只會(huì)在不存在的時(shí)候被創(chuàng)建。圖中的消息內(nèi)容是一個(gè)字節(jié)數(shù)組,所以你可以想怎么編碼都行。

最后,不要忘記關(guān)閉信道和連接。

Receiving

消費(fèi)者從RabbitMq獲取消息,不像生產(chǎn)者,我們要保持消費(fèi)者一直運(yùn)行,監(jiān)聽消息并且打印出來。



引入類庫(kù)

DefaultConsumer是一個(gè)實(shí)現(xiàn)了Consumer接口的類,我們使用它來緩存服務(wù)器推給我們的消息。

把隊(duì)列的名字設(shè)置成和生產(chǎn)者相同,然后我們打開連接和信道,然后聲明和生產(chǎn)者相同的隊(duì)列。


消費(fèi)者具體代碼

注意,在消費(fèi)者里我們也一樣的聲明了隊(duì)列,因?yàn)?,我們可能先于生產(chǎn)者啟動(dòng)消費(fèi)者,我們想確保在消費(fèi)消息之前隊(duì)列存在。

既然是異步的,我們還提供了一個(gè)(在我們準(zhǔn)備好用消息之前保存消息的)對(duì)象形式的回調(diào)。


DefaultConsumer子類做的事情

Putting it all together

編譯運(yùn)行略。


翻譯自https://www.rabbitmq.com/tutorials/tutorial-one-java.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,540評(píng)論 19 139
  • 來源 RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。支持消息的持久化、事務(wù)、擁塞控...
    jiangmo閱讀 10,512評(píng)論 2 34
  • 為了一些初學(xué)習(xí)者更好理解我就從簡(jiǎn)單的解釋一下Rabbitmq的原理吧?,首先你可以這樣想RabbitMq就是一個(gè)隊(duì)...
    螃蟹和駱駝先生Yvan閱讀 7,554評(píng)論 6 4
  • 關(guān)于消息隊(duì)列,從前年開始斷斷續(xù)續(xù)看了些資料,想寫很久了,但一直沒騰出空,近來分別碰到幾個(gè)朋友聊這塊的技術(shù)選型,是時(shí)...
    預(yù)流閱讀 586,594評(píng)論 51 787
  • 場(chǎng)景2:?jiǎn)伟l(fā)送多接收 使用場(chǎng)景:一個(gè)發(fā)送端,多個(gè)接收端,如分布式的任務(wù)派發(fā)。為了保證消息發(fā)送的可靠性,不丟失消息,...
    katkrazy閱讀 6,076評(píng)論 0 1

友情鏈接更多精彩內(nèi)容