博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第五节 RabbitMQ在C#端的应用-消息收发
阅读量:4639 次
发布时间:2019-06-09

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

原文:

版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/87361905

1.VS2013创建生产者端

创建控制台程序:WIRabbitMQProducer,并将.net框架修改为4.6.2(版本4.6以上都可以)。

添加NuGet程序包,RabbitMQ.Client,编写生产者程序,代码如下:

class Program    {        static void Main(string[] args)        {            IConnection conn = null;            IModel channel = null;            try            {                ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };                using (conn = factory.CreateConnection())                {                    using (channel = conn.CreateModel())                    {                        string queueName = "mqQueueName1";//队列名称                        channel.QueueDeclare(queueName, false, false, false, null);//定义队列                        string message = "消息内容201902191355";//消息内容                        var properties = channel.CreateBasicProperties();                        properties.DeliveryMode = 2;//持久化                        for (int i = 0; i < 1900000; i++)                        {                            string strSendMsg = string.Format("{0}_{1}", message, i);                            var body = Encoding.UTF8.GetBytes(strSendMsg);                            channel.BasicPublish("", queueName, properties, body);//推送                            Console.WriteLine("已生产:{0}", strSendMsg);                        }                    }                }            }            catch (Exception ex)            {                Console.WriteLine("异常", ex.ToString());            }            finally            {
//关闭 conn.Close(); channel.Close(); } } }

运行效果:

2.VS2013创建消费者端

创建控制台程序:WIRabbitMQConsumer,并将.net框架修改为4.6.2。

添加NuGet程序包,RabbitMQ.Client,编写生产者程序,代码如下:

public void SubscribeMQ()        {            IConnection conn = null;            IModel channel = null;            int runIndex = 1;            try            {                Console.Write("------启动RabbitMQ监听-------\n\t");                ConnectionFactory factory = new ConnectionFactory() { HostName = "127.0.0.1", Port = 5672, UserName = "wiadmin", Password = "wi2019" };                using (conn = factory.CreateConnection())                {                    using (channel = conn.CreateModel())                    {                        #region 消息响应                        string queueName = "mqQueueName1";                        var consumer = new QueueingBasicConsumer(channel);                        channel.BasicConsume(queueName, false, consumer);                        while (true)                        {                            var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();                            var body = ea.Body;                            var message = Encoding.UTF8.GetString(body);                            Console.WriteLine("已接收:{0},{1}", message, runIndex);                            runIndex++;                            channel.BasicAck(ea.DeliveryTag, false);                        }                        #endregion                    }                }            }            catch (Exception ex)            {            }        }

运行效果:

可同时运行多个消费者端,实现多端同时消费,提交处理效率:

 

转载于:https://www.cnblogs.com/owenzh/p/11087948.html

你可能感兴趣的文章
[Leetcode] unique paths ii 独特路径
查看>>
HDU 1217 Arbitrage (Floyd + SPFA判环)
查看>>
IntelliJ idea学习资源
查看>>
Django Rest Framework -解析器
查看>>
ExtJs 分组表格控件----监听
查看>>
Hibernate二级缓存配置
查看>>
LoadRunner常用术语
查看>>
关于jedis2.4以上版本的连接池配置,及工具类
查看>>
记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
查看>>
mechanize (1)
查看>>
FactoryBean
查看>>
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
如何在我们项目中利用开源的图表(js chart)
查看>>
nfs服务器工作原理
查看>>
C3P0连接池工具类使用
查看>>
SVN常用命令备注
查看>>
孩子教育
查看>>
解决Cacti监控图像断断续续问题
查看>>
结构体的传参理解成员的存储方式
查看>>
python 进程与线程(理论部分)
查看>>