一、安裝
1.安裝Erlang
在安裝RabbitMQ之前,需要先安裝Erlang。可以在官網上找到Erlang的安裝文件。並下載對應操作系統的版本。比如在macOS中,可以使用Homebrew安裝Erlang,只需要在終端中執行以下命令即可:
brew install erlang
2.安裝RabbitMQ
在Erlang安裝完成後,就可以開始安裝RabbitMQ了。可以在RabbitMQ官網上找到相關安裝程序。macOS用戶也可以使用Homebrew工具進行安裝。只需要在終端中執行以下命令即可:
brew install rabbitmq
3.安裝GoRabbitMQ客戶端
安裝完成RabbitMQ之後,就可以開始使用GoRabbitMQ客戶端了。可以在terminal或者CMD中執行以下命令:
go get github.com/streadway/amqp
二、連接到RabbitMQ
連接到RabbitMQ需要三個關鍵參數:主機名、端口號、虛擬主機名稱。其中,虛擬主機名稱是名稱空間,可以用於隔離不同的應用程序。
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
這將會嘗試連接本地的RabbitMQ節點。如果連接成功,將返回一個amqp.Connection對象。如果無法連接,將返回一個非零的錯誤值。
打開連接後,需要打開一個通道(channel)。通道是在打開連接的基礎上創建的一些邏輯連接。可以在同一連接上打開多個通道。通道由客戶端和RabbitMQ共同管理。
ch, err := conn.Channel()
此時,可以使用ch對象來發送和接收消息。如果通道無法打開,則會返回一個非零的錯誤值。
三、發送消息
發送消息的過程可以分為以下幾個步驟:
1.定義消息體
首先,需要創建一個amqp.Publishing對象,並設置消息正文。
msg := amqp.Publishing {
Body: []byte("hello, world!"),
}
2.發布消息
使用channel.Publish()方法將消息發布到特定的交換機(exchange)上。交換機可以理解為消息的分發中心,根據消息的路由信息將消息發送給指定隊列。
err = ch.Publish(
"myexchange", // exchange
"mykey", // routing key
false, // mandatory
false, // immediate
msg, // message to publish
)
這裡將消息發布到名為“myexchange”的交換機上,使用“mykey”作為路由鍵。如果交換機和路由鍵沒有匹配到任何隊列,則該消息將會被丟棄。mandatory參數表示如果消息無法被路由,則將會返回一個非零錯誤值給調用者。immediate參數表示如果該消息在當前時刻無法被分發到隊列,則會立即返回錯誤。
四、消費消息
消費消息需要先在隊列上註冊一個消費者(consumer)。
1.定義消費者
首先,需要定義一個amqp.Consumer對象,定義回調函數用於處理接收到的消息。
consumer := amqp.Consumer {
Tag: "myconsumer",
Channel: ch,
AutoAck: false,
}
ch.Consume(
"myqueue",
"myconsumer",
false,
false,
false,
false,
nil,
)
2.消費消息
使用ch.Consume()方法開始消費消息。參數傳入隊列名稱、消費者標籤、是否自動應答、是否獨佔、是否阻塞、處理消息的回調函數以及其他參數。
for delivery := range msgs {
err := delivery.Ack(false)
if err != nil {
log.Println(err)
}
log.Printf("Received message: %s\n", delivery.Body)
}
其中,delivery對象包含有關消息的所有信息,包括消息正文、路由鍵、交換機名稱、消息的標識符等。使用delivery.Ack()方法確認消息已經被消費。如果沒有確認,RabbitMQ將會再次發送消息給其他消費者處理。
五、總結
GoRabbitMQ是一個使用方便的AMQP庫,可以在Go應用程序中使用消息隊列進行數據傳輸。本文詳細介紹了如何使用GoRabbitMQ連接到RabbitMQ集群、發布消息、消費消息等操作。希望本文能夠幫助讀者更好地了解和使用GoRabbitMQ。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/309369.html
微信掃一掃
支付寶掃一掃