栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

rabbitmq——交换机fanout和direct

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)
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753310.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号