消费者
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package main import ( "fmt" "github.com/streadway/amqp" ) func failOnError(err error , msg string ) { if err != nil { fmt. Println ( "%s: %s" , msg, err) } } // 只能在安装 rabbitmq 的服务器上操作 func main() { conn, err := amqp.Dial( "amqp://mquser:123456@127.0.0.1/toutiao" ) failOnError(err, "Failed to connect to RabbitMQ" ) defer conn. Close () ch, err := conn.Channel() failOnError(err, "Failed to open a channel" ) defer ch. Close () q, err := ch.QueueDeclare( "toutiao.web.test" , // 队列名字 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 "toutiao" , // consumer true , // auto-ack,true消费了就消失 false , // exclusive false , // no-local false , // no-wait nil , // args ) failOnError(err, "Failed to register a consumer" ) forever := make ( chan bool ) go func () { for d := range msgs { fmt. Println (fmt.Sprintf( "返回的消息:%s" ,d.Body)) } }() fmt. Println ( "[*] Waiting for messages. To exit press CTRL+C" ) <-forever } |
生产者
body:消息体
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package main import ( "github.com/streadway/amqp" "log" ) func failOnError(err error , msg string ) { if err != nil { log.Fatalf( "%s: %s" , msg, err) } } // 只能在安装 rabbitmq 的服务器上操作 func main() { conn, err := amqp.Dial( "amqp://mquser:123456@127.0.0.1/toutiao" ) failOnError(err, "Failed to connect to RabbitMQ" ) defer conn. Close () ch, err := conn.Channel() failOnError(err, "Failed to open a channel" ) defer ch. Close () q, err := ch.QueueDeclare( "toutiao.web.test" , // name false , // durable false , // delete when unused false , // exclusive false , // no-wait nil , // arguments ) failOnError(err, "Failed to declare a queue" ) body := "Hello World!" //发送的消息 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" ) } |
以上就是Golang rabbitMQ生产者消费者实现示例解析的详细内容,更多关于Golang rabbitMQ生产者消费者的资料请关注服务器之家其它相关文章!
原文链接:https://www.cnblogs.com/guyouyin123/p/14768971.html