分类:
RabbitMq
Fanout类型交换机的特点是:
同样的数据分发给每一个自己所绑定的队列,每个队列可以按照自己的需求对数据进行不同的处理
【注意】:Fanout类型不会通过routingKey进行分类,所以无论你的数据中写不写routingKey都没用
队列1与队列2的代码:
队列2就把代码中队列名改成2就可以了
//192.168.1.63 //创建一个连接工厂 ConnectionFactory factory = new ConnectionFactory() { HostName= "192.168.1.63", UserName = "hbadmin", Password= "hbadmin" }; using (var conntion = factory.CreateConnection()) { using (var channel = conntion.CreateModel()) { //申明交换机 channel.ExchangeDeclare("myfanoutexchange", ExchangeType.Fanout, true, false, null); //创建队列 channel.QueueDeclare("myfanoutqueue1", true, false, false, null); //将queue绑定到exchange之上 channel.QueueBind("myfanoutqueue1", "myfanoutexchange", string.Empty, null); //创建并添加事件 EventingBasicConsumer consumer = new EventingBasicConsumer(channel); consumer.Received += (sender,e)=> { var msg = Encoding.UTF8.GetString(e.Body); Console.WriteLine(msg); }; channel.BasicConsume("myfanoutqueue1", true, consumer); Console.WriteLine("consumer【1】端启动完毕!"); Console.Read(); } }
数据端代码
ConnectionFactory factory = new ConnectionFactory() { HostName = "192.168.1.63", UserName = "hbadmin", Password = "hbadmin" }; using (var conntion = factory.CreateConnection()) { using (var channel = conntion.CreateModel()) { //加入100条数据 for (int i = 0; i < 100; i++) { var msg = Encoding.UTF8.GetBytes($"{i}:你好鸭!"); channel.BasicPublish("myfanoutexchange", string.Empty, null, msg); Console.WriteLine(i); } Console.Read(); } }
来看看结果
我们可以发现:
队列1与队列2数据是相同,对吧!
中途就可以通过不同队列实现不同的功能就行了!
rabbitmq基础命令
rabbitmqctl stop_app #停止rabbitmq运行 rabbitmqctl start_app #启动rabbitmq运行 rabbitmqctl reset #格式化mq 【注意】:如需要格式化mq,需要先stop_app,然后reset,再start_app哟!
本期就这样,大家有机会多尝试!
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术