第五节 RabbitMQ在C#端的应用-消息收发
版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/87361905 </div>
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
<div class="htmledit_views" id="content_views">
<p><strong>1.VS2013创建生产者端</strong></p>
创建控制台程序: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)
{
}
}
运行效果:
可同时运行多个消费者端,实现多端同时消费,提交处理效率:
第五节 RabbitMQ在C#端的应用-消息收发的更多相关文章
- 第四节 RabbitMQ在C#端的应用-客户端连接
原文:第四节 RabbitMQ在C#端的应用-客户端连接 版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/87 ...
- golang rabbitmq实践 (二 实现简单的消息收发)
1:驱动 本来打算自己写一个驱动的,后来发现github上面已经有了,那我就直接拿现成的了, 驱动采用 github.com/streadway/amqp ,直接import就可以啦! 2:excha ...
- 转: RabbitMQ实现中AMQP与MQTT消息收发异同
转自:http://www.cnblogs.com/lucifer1997/p/9438186.html 实现了AMQP与MQTT(至多一次)后,用多个队列以topic exchange的方式用相同交 ...
- RabbitMQ实现中AMQP与MQTT消息收发异同
实现了AMQP与MQTT(至多一次)后,用多个队列以topic exchange的方式用相同交换机监听同一个主题(topic),发现情况存在不同,觉得有点意思,所以记录了下来. 用2个MQTT(分别记 ...
- centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课
centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...
- 第五节 面向连接传输:TCP
第五节 面向连接传输:TCP TCP概述RFCs:793,1122,1323,2018,2581 点对点: 一个发送方,一个接收方 可靠,按序的字节流: 无“报文边界”,无结构但有 ...
- 第四百一十五节,python常用排序算法学习
第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...
- 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)
并发编程概述 前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...
- 第九节: 利用RemoteScheduler实现Sheduler的远程控制 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案 第六节: 六类Calander处理六种不同的时间场景 第五节: Quartz.Net五大构件之Trigger的四大触发类 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联
第九节: 利用RemoteScheduler实现Sheduler的远程控制 一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上 ...
随机推荐
- elasticsearch 基础 —— Update By Query API
Update By Query API 最简单的用法是_update_by_query在不更改源的情况下对索引中的每个文档执行更新.这对于获取新属性或其他一些在线映射更改很有用 .这是API: POS ...
- Maven Filter与Profile隔离生产环境与开发环境
Maven Filter与Profile隔离生产环境与开发环境 在不同的开发阶段,我们一般用到不同的环境,开发阶段使用开发环境的一套东西,测试环境使用测试环境的东西,可能有多个测试环境,生产环境使用的 ...
- Sass-除法
Sass的乘法运算规则也适用于除法运算.不过除了除法运算还有一个特殊之处.众所周知“/”符号在css中已作为一种符号使用,因此在sass中做除法运算时,直接使用"/" 符号作为除号 ...
- linux shell 指令
一.文件比较运算符 1. e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ] 2. -d filename 如果 filename为目录,则为 ...
- java访问ftp
1.连接ftp FTPClient ftpClient = new FTPClient(); ftpClient.connect(host,port); ftpClient.login(userNam ...
- webdriver原理
WebDriver 安装C/S构架设计的: 代码(客户端)--->驱动(解析代码)----->浏览器(服务端) 代码通过http请求发给浏览器驱动,驱动解析代码把他们发给浏览器,浏览器执行 ...
- Exception和Error区别
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11393728.html Exception和Error都是继承了Throwable类,在Java中只有 ...
- boost container
Boost Container provides additional advantages: (1) The interface of the containers resemble those o ...
- Apache Flink 为什么能够成为新一代大数据计算引擎?
众所周知,Apache Flink(以下简称 Flink)最早诞生于欧洲,2014 年由其创始团队捐赠给 Apache 基金会.如同其他诞生之初的项目,它新鲜,它开源,它适应了快速转的世界中更重视的速 ...
- 二叉查找树BST
每棵子树头节点的值都比各自左子树上所有节点值要大,也都比各自右子树上所有节点值要小. 二叉查找树的中序遍历序列一定是从小到大排列的. 一个节点的后继节点是指,这个节点在中序遍历序列中的下一个节点.相应 ...