golang连接rabbitmq
1.docke 中安装 rabbitmq docker pull rabbitmq ? 2.运行 rabbitmq docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:latest ? 3.下载 rabbitmq golang 客户端 go get github.com/streadway/amqp ? 4.send.go 1 package main 2 3 import ( 4 "log" 5 6 "github.com/streadway/amqp" 7 ) 8 9 func failOnError(err error,msg string) { 10 if err != nil { 11 log.Fatalf("%s: %s",msg,err) 12 } 13 } 14 15 // 只能在安装 rabbitmq 的服务器上操作 16 func main() { 17 conn,err := amqp.Dial("amqp://guest:[email?protected]:5672/") 18 failOnError(err,"Failed to connect to RabbitMQ") 19 defer conn.Close() 20 21 ch,err := conn.Channel() 22 failOnError(err,"Failed to open a channel") 23 defer ch.Close() 24 25 q,err := ch.QueueDeclare( 26 "hello",// name 27 false,// durable 28 false,// delete when unused 29 false,// exclusive 30 false,// no-wait 31 nil,// arguments 32 ) 33 failOnError(err,"Failed to declare a queue") 34 35 body := "Hello World!" 36 err = ch.Publish( 37 "",// exchange 38 q.Name,// routing key 39 false,// mandatory 40 false,// immediate 41 amqp.Publishing{ 42 ContentType: "text/plain",43 Body: []byte(body),44 }) 45 log.Printf(" [x] Sent %s",body) 46 failOnError(err,"Failed to publish a message") 47 } ? 5.recv.go 1 package main 2 3 import ( 4 "log" 5 6 "github.com/streadway/amqp" 7 ) 8 9 func failOnError(err error,err := amqp.Dial("amqp://guest:[email?protected]:5672/") 18 failOnError(err,"Failed to declare a queue") 34 35 msgs,err := ch.Consume( 36 q.Name,// queue 37 "",// consumer 38 true,// auto-ack 39 false,// exclusive 40 false,// no-local 41 false,// no-wait 42 nil,// args 43 ) 44 failOnError(err,"Failed to register a consumer") 45 46 forever := make(chan bool) 47 48 go func() { 49 for d := range msgs { 50 log.Printf("Received a message: %s",d.Body) 51 } 52 }() 53 54 log.Printf(" [*] Waiting for messages. To exit press CTRL+C") 55 <-forever 56 } ? 6.分别在在两个窗口执行? ? go run ./send.go 2018/08/22 15:48:13? [x] Sent Hello World! ? go run ./recv.go 2018/08/22 15:48:16 [*] Waiting for messages. To exit press CTRL+C 2018/08/22 15:48:16 Received a message: Hello World! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |