博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ消息机制广播分发
阅读量:5341 次
发布时间:2019-06-15

本文共 2810 字,大约阅读时间需要 9 分钟。

public static void SendMessage()        {            var factory = new ConnectionFactory();            factory.HostName = "192.168.1.117";            factory.UserName = "witbank";            factory.Password = "123456";            using (var connection = factory.CreateConnection())            {                using (var channel = connection.CreateModel())                {                    const string EXCHANGE_NAME = "logs";                    const string ROUTING_KEY = "";                    channel.ExchangeDeclare(EXCHANGE_NAME, "fanout");//广播                    while (true)                    {                        string message = "请输入要发送的信息";                        Console.WriteLine(message);                        message = Console.ReadLine();                        var body = Encoding.UTF8.GetBytes(message);                        channel.BasicPublish(EXCHANGE_NAME, ROUTING_KEY, null, body);//不需要指定routing key,设置了fanout,指了也没有用.                        Console.WriteLine(" [x] Sent {0}", message);                    }                }            }        }

  

public static void ReceiveMessage()        {            var factory = new ConnectionFactory();            factory.HostName = "192.168.1.117";            factory.UserName = "witbank";            factory.Password = "123456";            using (var connection = factory.CreateConnection())            {                using (var channel = connection.CreateModel())                {                    const string EXCHANGE_NAME = "logs";                    const string ROUTING_KEY = "";                    channel.ExchangeDeclare(EXCHANGE_NAME, "fanout");//广播                    QueueDeclareOk queueOk = channel.QueueDeclare();//每当Consumer连接时,我们需要一个新的,空的queue。因为我们不对老的log感兴趣。幸运的是,如果在声明queue时不指定名字,那么RabbitMQ会随机为我们选择这个名字。                    现在我们已经创建了fanout类型的exchange和没有名字的queue(实际上是RabbitMQ帮我们取了名字)。                    那exchange怎么样知道它的Message发送到哪个queue呢?答案就是通过bindings:绑定。                    string queueName = queueOk.QueueName;//得到RabbitMQ帮我们取了名字                    channel.QueueBind(queueName, EXCHANGE_NAME, ROUTING_KEY);//不需要指定routing key,设置了fanout,指了也没有用.                    var consumer = new QueueingBasicConsumer(channel);                    channel.BasicConsume(queueName, true, consumer);                    Console.WriteLine(" [*] Waiting for messages." + "To exit press CTRL+C");                    while (true)                    {                        var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();//挂起的操作                        var body = ea.Body;                        var message = Encoding.UTF8.GetString(body);                        Console.WriteLine(" [x] Received {0}", message);                    }                }            }        }

  

转载于:https://www.cnblogs.com/happygx/p/6114077.html

你可能感兴趣的文章
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
界面交互之支付宝生活圈pk微信朋友圈
查看>>
[DLX精确覆盖+打表] hdu 2518 Dominoes
查看>>
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
查看>>
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
web.xml 中加载顺序
查看>>
pycharm激活地址
查看>>
hdu 1207 四柱汉诺塔
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
display:none与visible:hidden的区别
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
京东静态网页练习记录
查看>>