1.基礎(chǔ)環(huán)境依賴
下載并安裝Eralng OTP For Windows(erlang的環(huán)境)
下載MQ Go的依賴
2.配置RabbitMQ
定位到rabbitmq的安裝路徑(圖1-1):

image
接著輸入rabbitmqctl status,出現(xiàn)類似如下說明安裝成功(圖2-2)

image
安裝 RabbitMQWeb的管理插件,接著上面繼續(xù)輸入以下命令(rabbitmq-plugins enable rabbitmq_management)
之后可以通過http://127.0.0.1:15672/,為了安全起見,我們需要重新設(shè)置賬戶密碼,首先輸入rabbitmqctl.bat list_users來查詢用戶列表(圖2-3),默認為guest:guest,新增用戶輸入rabbitmqctl.bat add_user username password,授予管理員權(quán)限輸入rabbitmqctl.bat set_user_tags username administrator,rabbitmqctl.bat set_permissions -p / username "." "." ".*"),之后可用新的username和password登錄賬戶了。

image
send.go
packagemain
import(
"log"
"github.com/streadway/amqp"
)
funcfailOnError(errerror,msgstring) {
iferr !=nil{
log.Fatalf("%s:%s", msg, err)
}
}
func main() {
conn,err:=amqp.Dial("amqp://guest:guest@localhost:5672/")
failOnError(err,"Failed to connect to RabbitMQ")
deferconn.Close()
ch,err:=conn.Channel()
failOnError(err,"Failed to open a channel")
deferch.Close()
q,err:=ch.QueueDeclare(
"hello",//name
false,//durable
false,//delete when unused
false,//exclusive
false,//no-wait
nil,//arguments
)
failOnError(err,"Failed to declare a queue")
body:="hello"
err = ch.Publish(
"",//exchange
q.Name,//routing key
false,//mandatory
false,//immediate
amqp.Publishing{
ContentType:"text/plain",
Body: []byte(body),
})
log.Printf("[x] Sent%s", body)
failOnError(err,"Failed to publish a message")
}
receive.go
package main
import(
"log"
"github.com/streadway/amqp"
)
func failOnError(errerror,msgstring) {
iferr !=nil{
log.Fatalf("%s:%s", msg, err)
}
}
func main() {
conn,err:=amqp.Dial("amqp://guest:guest@localhost:5672/")
failOnError(err,"Failed to connect to RabbitMQ")
deferconn.Close()
ch,err:=conn.Channel()
failOnError(err,"Failed to open a channel")
deferch.Close()
q,err:=ch.QueueDeclare(
"hello",//name
false,//durable
false,//delete when unused
false,//exclusive
false,//no-wait
nil,//arguments
)
failOnError(err,"Failed to declare a queue")
msgs,err:=ch.Consume(
q.Name,//queue
"",//consumer
true,//auto-ack
false,//exclusive
false,//no-local
false,//no-wait
nil,//args
)
failOnError(err,"Failed to register a consumer")
forever:=make(chanbool)
gofunc() {
ford:=rangemsgs {
log.Printf("Received a message:%s", d.Body)
}
}()
log.Printf("[*] Waiting for messages. To exit press CTRL+C")
<-forever
}
測試結(jié)果

image