iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#如何用RabbitMQ实现消息订阅与发布
  • 518
分享到

C#如何用RabbitMQ实现消息订阅与发布

2023-06-15 02:06:07 518人浏览 八月长安
摘要

这篇文章给大家分享的是有关C#如何用RabbitMQ实现消息订阅与发布的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Fanout交换机模型扇形交换机,采用广播模式,根据绑定的交换机,路由到与之对应的所有队列。一个

这篇文章给大家分享的是有关C#如何用RabbitMQ实现消息订阅与发布的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Fanout交换机模型

扇形交换机,采用广播模式,根据绑定的交换机,路由到与之对应的所有队列。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的。

C#如何用RabbitMQ实现消息订阅与发布

RabbitMQ控制台操作

新增两个队列

在同一个Virtual host下新增两个队列Q1,Q2,如下图所示:

C#如何用RabbitMQ实现消息订阅与发布

绑定fanout交换机

将两个队列绑定到系统默认的fanout交换机,如下所示:

C#如何用RabbitMQ实现消息订阅与发布

示例效果图

生产者,采用Fanout类型交换机发布消息,如下图所示:

C#如何用RabbitMQ实现消息订阅与发布

 当生产者发布 一条消息时,Q1,Q2两个队列均会收到,如下图所示:

C#如何用RabbitMQ实现消息订阅与发布

当启动消费者后,两个消费者,均会订阅到相关消息,如下图所示:

C#如何用RabbitMQ实现消息订阅与发布

核心代码

消息发布

建立连接后,将通道声明类型为Fanout的交换机,如下所示:

/// <summary>    /// fanout类型交换机,发送消息    /// </summary>    public class RabbitMqFanoutSendHelper : RabbitMqHelper {        /// <summary>        /// 发送消息        /// </summary>        /// <param name="msg"></param>        /// <returns></returns>        public bool SendMsg(string msg)        {            try            {                using (var conn = GetConnection("/Alan.hsiang"))                {                    using (var channel = conn.CreateModel())                    {                        channel.ExchangeDeclare(exchange: "amq.fanout", type: ExchangeType.Fanout,durable:true);                        var body = Encoding.UTF8.GetBytes(msg);                        channel.BasicPublish(exchange: "amq.fanout",                                             routingKey: "",                                             basicProperties: null,                                             body: body);                        //Console.WriteLine(" [x] Sent {0}", message);                    };                };                return true;            }            catch (Exception ex)            {                throw ex;            }        }    }

消息订阅

建立连接后,通道声明类型为Fanout的交换机,并绑定队列进行订阅,如下所示:

/// <summary>    /// 扇形交换机接收消息    /// </summary>    public class RabbitMqFanoutReceiveHelper : RabbitMqHelper    {        public RabbitMqReceiveEventHandler OnReceiveEvent;        private IConnection conn;        private IModel channel;        private EventingBasicConsumer consumer;        public bool StartReceiveMsg(string queueName)        {            try            {                conn = GetConnection("/Alan.hsiang");                channel = conn.CreateModel();                channel.ExchangeDeclare(exchange: "amq.fanout", type: ExchangeType.Fanout,durable:true);                //此处随机取出交换机下的队列                //var queueName = channel.QueueDeclare().QueueName;                channel.QueueBind(queue: queueName, exchange: "amq.fanout", routingKey: "");                consumer = new EventingBasicConsumer(channel);                consumer.Received += (model, ea) =>                {                    var body = ea.Body.ToArray();                    var message = Encoding.UTF8.GetString(body);                    //Console.WriteLine(" [x] Received {0}", message);                    if (OnReceiveEvent != null)                    {                        OnReceiveEvent(queueName+"::"+message);                    }                };                channel.BasicConsume(queue: queueName,                                        autoAck: true,                                        consumer: consumer);                return true;            }            catch (Exception ex)            {                throw ex;            }        }    }

C#是什么

C#是一个简单、通用、面向对象编程语言,它由微软Microsoft开发,继承了C和c++强大功能,并且去掉了一些它们的复杂特性,C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程从而成为.net开发的首选语言,但它不适用于编写时间急迫或性能非常高的代码,因为C#缺乏性能极高的应用程序所需要的关键功能。

感谢各位的阅读!关于“C#如何用RabbitMQ实现消息订阅与发布”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: C#如何用RabbitMQ实现消息订阅与发布

本文链接: https://www.lsjlt.com/news/276919.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作