RabbitMQ系列(二):“hello,world!”

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

RabbitMQ的安裝

官網:http://www.rabbitmq.com

安裝地址:http://www.rabbitmq.com/download.html

RabbitMQ的go語言驅動:https://github.com/streadway/amqp

Hello,World!

假設你已經安裝好了RabbitMQ,並且已經安裝好了rabbitMQ的golang驅動,接下來我們開始我們的"hello,world!”

這裡我們寫兩個小程式,一個作為Message的Producer,一個作為Message的Consumer,它們的關係如下:


P代表Producer,C代表Consumer,中間紅色的部分就是queue,它是RabbitMQ維持的與C之間的一個訊息緩衝區。

現在我們開始寫一個Message Producer,將它命名為sender.go,以及一個Message Consumer,命名為receiver.go,在sender.go中將串連至RabbitMQ,然後發送Message到RabbitMQ中。receiver.go將串連至RabbitMQ,然後從它的一個queue中接收Message。

發送操作

發送操作過程


我們匯入如下包:


再寫一個處理err的func


串連到RabbitMQ Server


其中amqp是傳輸協議,登入RabbitMQ Server的帳號密碼均為devolop,地址是localhost:5672,最後面的/dell表示的是Virtual Hosts的名字。如果這些你都沒有設定,那麼amqp.Dial(url string)這個url填寫amqp://guest:guest@localhost:5672/即可。


接下來建立一個channel


為了能夠發送訊息,我們還得聲明一個queue,這樣我們就可以往這個queue中發送訊息了。這個queue的名字叫做hello


現在可以發送訊息了


進入你的RabbitMQ 的web管理頁面,會發現queues中的hello已經有了一條訊息


註:這個發送未起作用

如果你第一次用RabbitMQ,在運行了上面的代碼且成功之後還未在web管理頁面發現你發送的訊息,那麼可能是你遺忘了填頭資訊或者填寫錯誤。也有可能是broker啟動時沒有足夠的硬碟空間(預設至少200M),所以RabbitMQ拒絕接受訊息,此時你應該檢查日誌並且減少這個限制的閥值,這個連結會協助你怎樣設定這個值。

接收操作

接收操作過程


在接收操作中,我們同樣要有連結到RabbitMQ Server,開啟一個conn和一個channel,並且聲明一個queue,這個queue和發送操作中的聲明一模一樣,因為接收操作一般先於發送操作啟動,所以從queue中接收訊息時要確保該queue已經存在。

對於建立相同的queue,RabbitMQ在同一個virtual hosts下是不接受兩個同名的queue的,所以先建立的queue存在的情況下,再去建立一個同名的queue,此時這個queue的配置將不會生效,不會覆蓋先前建立的那個queue,也不會返回錯誤。

接收訊息:


這樣在控制台就能看到從RabbitMQ 中接收到的訊息。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.