RabbitMQ~广播消息
来源:互联网 发布:网络大电影如何赚钱 编辑:程序博客网 时间:2024/06/07 18:17
定义
广播消息是指生产者产生的消息将分发给所有订阅这个消息的消费者,而普通的模式是:一批消息可以被多个人共同消费,如consumer1可能消费1,3,5记录,而consumer2可能消费的是2,4,6这种模块就是共同消费模块;而今天说的是广播消息,它是指一些消息同时被推送到多个订阅者,而这些订阅者收到的消息都是完整的,如consumer1收到的会是1,2,3,4,5,6,而consumer2回到的也会是1,2,3,4,5,6,这种就像广播一样,把消息广播给多人!
实质上是对Fanout类型的exchange的实现
通过我们RabbitMq的后台可以看到,它会使用fanout模式,并且会自己添加队列,当然队列名称也是动态的.
广播模式的生产者
static void TestFanout(int _index) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { const string EXCHANGE_NAME = "logs"; const string ROUTING_KEY = ""; channel.ExchangeDeclare(EXCHANGE_NAME, "fanout");//广播 var message = "hello out"; var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish(EXCHANGE_NAME, ROUTING_KEY, null, body);//不需要指定routing key,设置了fanout,指了也没有用. Console.WriteLine(" [x] Sent {0}", message + _index); } } }
广播模式的消费者
static void TestFanout() { var factory = new ConnectionFactory() { HostName = "localhost" }; 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(); string queueName = queueOk.QueueName; 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); } } } }
通过测试我们发布,由producer生产的消息,已经被推送到所有消费者那边了...
以上就是RabbitMQ的广播模式,通过本讲的学习,我们知道队列的又一用法!
感谢各位的阅读!
0 0
- RabbitMQ-消息广播
- RabbitMQ~广播消息
- RabbitMQ~广播消息
- RabbitMQ~广播消息
- RabbitMQ(part3广播发消息到不同消费者)----Publish/Subscribe
- RabbitMQ消息通信,一个生产者和多个消费者,广播式消息通信
- RabbitMQ(python实现)学习之二:Producer发送消息至多个消息队列queue(广播消息)
- rabbitmq实战(广播模式)
- 广播消息
- php amqp 消息队列 RabbitMQ 交换器类型 广播 fanout (四)
- 消息队列RabbitMQ RabbitMQ RabbitMQ等区别
- AMQP消息服务器 RabbitMQ
- AMQP消息服务器 RabbitMQ
- php RabbitMQ消息队列
- RabbitMQ消息确认机制
- RabbitMQ消息过期时间
- AMQP消息服务器RabbitMQ
- 向rabbitmq发送消息
- 我的个人博客开通啦,欢迎来吐槽,有何问题可发邮件到1207012718@qq.com反馈,谢谢~
- Jackson实现Object对象与Json字符串的互转
- 使用pod install发生的错误:[!] The 'XXX' target has frameworks with conflicting names: ummo
- Factorialize a Number
- UISearchController(使用、修改cancel文字)
- RabbitMQ~广播消息
- cookie和session的区别
- python基础学习-输入输出
- 从2段已序的数组中查找某一个数的算法
- 两个div右侧固定,左侧自适应屏幕
- I2C总线协议学习笔记
- 先存储逆序后的整数再输出
- 【RxJava】种下一棵树RxJava
- Android TelecomService的来电处理过程