300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > rabbitmq——交换机fanout和direct

rabbitmq——交换机fanout和direct

时间:2019-04-27 17:10:35

相关推荐

rabbitmq——交换机fanout和direct

交换机:

生产者将消息发送到交换机上,根据交换机不同的种类,将消息体按照不同的规则转发给不同的消费者。

fanout

此模式是将生产者生产的消息,通过交换机绑定的所有队列,发送到所有绑定到此交换机上的队列。

product.go

err = c.ExchangeDeclare("j" , amqp.ExchangeFanout , false, false , false , false , nil)fmt.Println(err)qu , err := c.QueueDeclare("hello-test" , false , false , false , false , nil)fmt.Println(err)err = c.QueueBind(qu.Name , "" , "j" , false ,nil)fmt.Println(err)msg , err := c.Consume(qu.Name ,"" , false , false , false , false , nil)fmt.Println(err)for d := range msg {fmt.Println(string(d.Body))d.Ack(false)}

fanout模式是将接收到的消息转发给绑定此交换机的所有队列。

direct

direct模式将生产者的消息通过key转发给不同的队列。

product.go

err = c.ExchangeDeclare("jht" , amqp.ExchangeDirect, false , false ,false , false , nil)fmt.Print(err)_ = c.Publish("jht" , "ok", false , false , amqp.Publishing{Body: []byte("test hello"),})

consumer.go

err = c.ExchangeDeclare("jht" , amqp.ExchangeDirect, false, false , false , false , nil)fmt.Println(err)qu , err := c.QueueDeclare("" , false , false , false , false , nil)fmt.Println(err)err = c.QueueBind(qu.Name , "ok" , "jht" , false ,nil)fmt.Println(err)msg , err := c.Consume(qu.Name ,"" , false , false , false , false , nil)fmt.Println(err)for d := range msg {fmt.Println(string(d.Body))d.Ack(false)}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。