go語言開發RabbitMQ-牛刀小小試試

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

RabbitMQ

    是一個訊息代理商,它負責接收和傳遞訊息,就像一個郵局,你寄信要通過郵局,郵局會接收你的信並將信傳送給收件者。由Erlang語言實現,使用AMQP協議。所謂AMQP,即Advanced Message Queuing Protocol,就是一個提供整合通訊服務的應用程式層標準進階訊息佇列協議。

 

安裝:

    官方提供了多種安裝方式 :http://www.rabbitmq.com/download.html

    筆者環境MacOS, 使用了homebrew的安裝方式,詳情見:http://www.rabbitmq.com/install-homebrew.html

 

 

P : producer 訊息生產者 

Q :queue訊息佇列,在RabbitMQ和應用中傳遞的訊息被存在訊息佇列中,訊息佇列是一個非常大的訊息池,其大小受限於服務的記憶體和硬碟的大小。多個P可以發送訊息到這個訊息佇列中,很多消費者也可以從這個訊息佇列中擷取訊息。 

C :consumer 訊息消費者,也是訊息接收者。一個消費者會一直等待接收訊息。 

 

使用go語言開發實現生產和消費訊息

 

 

首先,安裝依賴包,(提醒筆者自己使用godep save):

go get github.com/streadway/amqp

 

接下來,發送訊息,發行者需要串連Rabbit MQ,發送一個訊息,並退出:

首先,引入包依賴:

 

還有一個協助方法,用來檢查錯誤: 

接下來開始正式的使用RabbitMQ了。

先要串連RabbitMQ Server: 

amp.Dial(url string)  (*Connection, error) 方法中,url是一個符合AMQP URI格式的字串,amqp://userName:password@serverhost:port/ , 通過url中的userName、password進行許可權驗證,返回一個TCP串連。當然,還有更多串連方法。

 

擷取一個通道: 

接下來可以發送訊息,發送訊息前先聲明一個隊列,如果隊列已存在,則直接使用,並且將訊息傳入這個隊列,訊息體是byte類型:

 

熱乎乎的源碼在這兒:

 

https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/go/send.go

 

 

有了發送就要有接收啊,同樣引入包、failOnError方法,也需要開啟一個串連和通道,並且要聲明一個隊列,畢竟你還要從這個隊列中取訊息。此處代碼基本同上文,省略。

萬事俱備,只需要消費啦!

我們可以從這個隊列中取訊息啦,現實情境下,更多的是非同步處理訊息,此處使用goroutine讀取訊息:

 

 

 

 

 

好飯不怕晚,源碼在這兒:https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/go/receive.go

 

接下來,先運行 go run send.go,發送訊息,

再運行 go run receive.go,你會發現,訊息被接收到啦!

 

在終端運行命令列 rabbitmqctl list_queues,可以看到hello隊列了: 

其實,上述只是牛刀小試,更複雜的還在後面,筆者只是總結了一下,有不足之處歡迎指出!

嚴重參考:

http://www.rabbitmq.com/tutorials/tutorial-one-go.html

477 次點擊  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.