原文:第五节 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#端的应用-消息收发的更多相关文章

  1. 第四节 RabbitMQ在C#端的应用-客户端连接

    原文:第四节 RabbitMQ在C#端的应用-客户端连接 版权声明:未经本人同意,不得转载该文章,谢谢 https://blog.csdn.net/phocus1/article/details/87 ...

  2. golang rabbitmq实践 (二 实现简单的消息收发)

    1:驱动 本来打算自己写一个驱动的,后来发现github上面已经有了,那我就直接拿现成的了, 驱动采用 github.com/streadway/amqp ,直接import就可以啦! 2:excha ...

  3. 转: RabbitMQ实现中AMQP与MQTT消息收发异同

    转自:http://www.cnblogs.com/lucifer1997/p/9438186.html 实现了AMQP与MQTT(至多一次)后,用多个队列以topic exchange的方式用相同交 ...

  4. RabbitMQ实现中AMQP与MQTT消息收发异同

    实现了AMQP与MQTT(至多一次)后,用多个队列以topic exchange的方式用相同交换机监听同一个主题(topic),发现情况存在不同,觉得有点意思,所以记录了下来. 用2个MQTT(分别记 ...

  5. 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网络知识 第十五节课 ...

  6. 第五节 面向连接传输:TCP

    第五节 面向连接传输:TCP   TCP概述RFCs:793,1122,1323,2018,2581   点对点:   一个发送方,一个接收方   可靠,按序的字节流:   无“报文边界”,无结构但有 ...

  7. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

  8. 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

    并发编程概述   前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...

  9. 第九节: 利用RemoteScheduler实现Sheduler的远程控制 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案 第六节: 六类Calander处理六种不同的时间场景 第五节: Quartz.Net五大构件之Trigger的四大触发类 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联

    第九节: 利用RemoteScheduler实现Sheduler的远程控制   一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上 ...

随机推荐

  1. 云中沙箱学习笔记1-快速部署并使用MySQL数据库

    1.1 背景知识 业务背景 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品.MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面MyS ...

  2. Helm安装服务端tiller出现的问题

    一.首先,我是看尚硅谷视频跟着操作出现了问题,视频链接:https://www.bilibili.com/video/av66617940/?p=58 再说下大概的部署流程 Helm 部署 Helm ...

  3. springboot创建一个服务,向eureka中注册,使用swagger2进行服务管理

    首先pom.xml文件,spring boot.springcloud版本很麻烦,容易出问题 <?xml version="1.0" encoding="UTF-8 ...

  4. NodeJs初相识

    一.nodeJs简介 1.Node 是一个服务器端 JavaScript 解释器. 2.Node 的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码.处理高并 ...

  5. spring cloud学习笔记四 熔断器Hystrix

    我们知道分布式服务有这样一个特点,每一个微服务都有自己的业务,并且很多时候一个微服务的业务要依赖于其他微服务,如果这些相互关联的微服务中其中某个微服务请求失败时,就会导致其他调用它的微服务也会请求失败 ...

  6. Vue-cli 项目设置每个页面标题

    页面标题 在vue-router页面配置中添加meta的title信息,配合vue-router的beforeEach注册一个前置守卫用户获取到页面配置的title const title = '移动 ...

  7. MySQL索引优化之双表示例

    select * from tableA a left join tableB b on a.f_id = b.id; 索引建tableB表上面, 因为left join 注定左表全都有,所以应该关心 ...

  8. 【HDU6701】Make Rounddog Happy【权值线段树+双向单调队列】

    题意:给你一个序列,求满足要求的子序列个数,其中要求为: 1.子序列的max-子序列长度len<=k 2.子序列中不出现重复的数字 题解:首先看到子序列max,很容易想到枚举最大值然后分治,这个 ...

  9. AGC013 E Placing Squares——模型转化+矩阵乘法

    题目:https://atcoder.jp/contests/agc013/tasks/agc013_e 边长的平方,可以看做是在该范围内放两个不同的球的方案数.两个球可以重合. 题意变成:给长为 n ...

  10. AcWing 313. 花店橱窗 (线性DP)打卡

    题目:https://www.acwing.com/problem/content/315/ 题意:有一个矩阵,你需要在每一行选择一个数,必须保证前一行的数的下标选择在下一行的左边,即下标有单调性,然 ...