RabbitMQ的安裝
官網(wǎng):http://www.rabbitmq.com
安裝地址:http://www.rabbitmq.com/download.html
RabbitMQ的go語言驅(qū)動(dòng):https://github.com/streadway/amqp
Hello,World!
假設(shè)你已經(jīng)安裝好了RabbitMQ黍瞧,并且已經(jīng)安裝好了rabbitMQ的golang驅(qū)動(dòng)躬翁,接下來我們開始我們的"hello,world!”
這里我們寫兩個(gè)小程序昧旨,一個(gè)作為Message的Producer拜轨,一個(gè)作為Message的Consumer抽减,它們的關(guān)系如下:
P代表Producer,C代表Consumer撩轰,中間紅色的部分就是queue胯甩,它是RabbitMQ維持的與C之間的一個(gè)消息緩沖區(qū)昧廷。
現(xiàn)在我們開始寫一個(gè)Message Producer堪嫂,將它命名為sender.go,以及一個(gè)Message Consumer,命名為receiver.go,在sender.go中將連接至RabbitMQ木柬,然后發(fā)送Message到RabbitMQ中皆串。receiver.go將連接至RabbitMQ,然后從它的一個(gè)queue中接收Message眉枕。
發(fā)送操作
發(fā)送操作過程
我們導(dǎo)入如下包:
再寫一個(gè)處理err的func
連接到RabbitMQ Server
其中amqp是傳輸協(xié)議恶复,登錄RabbitMQ Server的賬號(hào)密碼均為devolop,地址是localhost:5672速挑,最后面的/dell表示的是Virtual Hosts的名字谤牡。如果這些你都沒有設(shè)置,那么amqp.Dial(url string)這個(gè)url填寫amqp://guest:guest@localhost:5672/即可姥宝。
接下來創(chuàng)建一個(gè)channel
為了能夠發(fā)送消息翅萤,我們還得聲明一個(gè)queue,這樣我們就可以往這個(gè)queue中發(fā)送消息了腊满。這個(gè)queue的名字叫做hello
現(xiàn)在可以發(fā)送消息了
進(jìn)入你的RabbitMQ 的web管理頁面套么,會(huì)發(fā)現(xiàn)queues中的hello已經(jīng)有了一條消息
注:這個(gè)發(fā)送未起作用
如果你第一次用RabbitMQ,在運(yùn)行了上面的代碼且成功之后還未在web管理頁面發(fā)現(xiàn)你發(fā)送的消息碳蛋,那么可能是你遺忘了填頭信息或者填寫錯(cuò)誤胚泌。也有可能是broker啟動(dòng)時(shí)沒有足夠的硬盤空間(默認(rèn)至少200M),所以RabbitMQ拒絕接受消息肃弟,此時(shí)你應(yīng)該檢查日志并且減少這個(gè)限制的閥值玷室,這個(gè)鏈接會(huì)幫助你怎樣設(shè)置這個(gè)值零蓉。
接收操作
接收操作過程
在接收操作中,我們同樣要有鏈接到RabbitMQ Server穷缤,打開一個(gè)conn和一個(gè)channel壁公,并且聲明一個(gè)queue,這個(gè)queue和發(fā)送操作中的聲明一模一樣绅项,因?yàn)榻邮詹僮饕话阆扔诎l(fā)送操作啟動(dòng)紊册,所以從queue中接收消息時(shí)要確保該queue已經(jīng)存在。
對(duì)于創(chuàng)建相同的queue快耿,RabbitMQ在同一個(gè)virtual hosts下是不接受兩個(gè)同名的queue的囊陡,所以先創(chuàng)建的queue存在的情況下,再去創(chuàng)建一個(gè)同名的queue掀亥,此時(shí)這個(gè)queue的配置將不會(huì)生效撞反,不會(huì)覆蓋先前創(chuàng)建的那個(gè)queue,也不會(huì)返回錯(cuò)誤搪花。
接收消息:
這樣在控制臺(tái)就能看到從RabbitMQ 中接收到的消息遏片。