.NET中使用Rabbit MQ
1、通过Nuget 获取Rabbit MQ NET client bindings from NuGet:
PM> Install-Package RabbitMQ.Client
2、发送者(生产者)代码:
public class RabbitMqSender
{
private static string strHostName = "localhost";
private static string strExchangeName = "test.exchange.1";
private static string strQueueName = "test.queue.1";
private static string strRouteKey = "test.exchange.key.1";
public static void send()
{ var factory = new ConnectionFactory() { HostName= strHostName };
using (var connection=factory.CreateConnection())
{
using (var channel=connection.CreateModel())
{
//channel.QueueDeclare
// (queue: strQueueName,
// durable: true,
// exclusive: false,
// autoDelete: false,
// arguments: null
// );
//channel.ExchangeDeclare(exchange: strQueueName,type:"direct", durable: true, autoDelete: false, arguments: null); channel.ExchangeDeclare(strExchangeName, ExchangeType.Direct, true, false);
channel.QueueDeclare(strQueueName, true, false, false, null);
channel.QueueBind(strQueueName, strExchangeName, strRouteKey, null);
string message = string.Empty;
byte[] body = null;
for (int i = ; i < ; i++)
{
message = i+DateTime.Now.ToString() + " -----send rabbitmq message!";
body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(
exchange: strExchangeName,
routingKey: strRouteKey,
basicProperties: null,
body: body
);
Console.WriteLine("{0}", message);
}
} }
}
}
3、接收者(消费者)代码
public class RabbitMqReceiver
{
private static string strHostName = "localhost";
private static string strExchangeName = "test.exchange.1";
private static string strQueueName = "test.queue.1";
private static string strRouteKey = "test.exchange.key.1";
public static void receive()
{
var factory = new ConnectionFactory() { HostName = strHostName };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{ //channel.ExchangeDeclare(exchange: strQueueName, type: "direct", durable: true, autoDelete: false, arguments: null);
channel.ExchangeDeclare(strExchangeName, ExchangeType.Direct, true, false);
channel.QueueDeclare(strQueueName, true, false, false, null);
channel.QueueBind(strQueueName, strExchangeName, strRouteKey, null); var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine("AAAAAAAAA--- [x] Received {0}", message);
};
channel.BasicConsume(queue: strQueueName,
noAck: true,
consumer: consumer); //BasicGetResult result = channel.BasicGet(queue: "test.queue", noAck: true);
//while (result!= null)
//{
// string strMessage = Encoding.UTF8.GetString(result.Body);
// Console.WriteLine(" [x] Received {0}", strMessage);
// result = channel.BasicGet(queue: "test.queue", noAck: true);
//}
Console.WriteLine(" Press [enter] to exit."); Console.ReadLine(); }
}
}
4、运行效果

.NET中使用Rabbit MQ的更多相关文章
- redis反向代理docker容器中的rabbit mq服务
最近做的项目中用到了docker,发现docker容器还真挺好用的,可以统一来管理各种资源,项目. 但是在实际使用中就碰到下面这个问题(下面所有的应用都是在docker中启动的): 通过nginx来反 ...
- spring boot 中 rabbit mq基础例子
1.先安装ELANG,再按照RabbitMQ 2.打开RabbitMQ控制台:rabbit command prompt 1.设置elang的路径:set ERLANG_HOME=D:\work_pr ...
- 在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- windows下的php rabbit mq安装、配置
http://www.cnblogs.com/shanyou/p/4067250.html 这篇博文写的rabbit mq和erlang的安装以及rabbitmq可视化插件的一些操作 接下去开始安装P ...
- (转)在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- celery rabbit mq 详解
Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...
- Rabbit MQ 消息确认和持久化机制
一:确认种类 RabbitMQ的消息确认有两种.一种是消息发送确认,用来确认生产者将消息发送给交换器,交换器传递给队列的过程中消息是否成功投递.发送确认分为两步,一是确认是否到达交换器,二是确认是否到 ...
- celery+Rabbit MQ实战记录
基于以前的一篇文章,celery+Rabbit MQ的安装和使用, 本文更加详细的介绍如何安装和使用celey, Rabbit MQ. 并记录在使用celery时遇到的一些问题. 1.安装 Rabbi ...
- Rabbit MQ 入门指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
随机推荐
- ES6学习笔记之map、set与数组、对象的对比
ES6 ES5中的数据结构,主要是用Array和Object.在ES6中主要新增了Set和Map数据结构.到目前为止,常用的数据结构有四种Array.Object.Set.Map.下面话不多说了,来一 ...
- Rapid 2D-to-3D conversion——快速2D到3D转换
https://blog.csdn.net/qq_33445835/article/details/80143598 目前想做一个关于2D转3D的项目,由于国内资料比较少而且大部分都是基于国外的研究 ...
- Python入门之logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...
- bzoj1642 / P2889 [USACO07NOV]挤奶的时间Milking Time
P2889 [USACO07NOV]挤奶的时间Milking Time 普通的dp 休息时间R其实就是把结束时间后移R个单位而已.但是终点也需要后移R位到n+R. 每个时间段按起始时间排序,蓝后跑一遍 ...
- 关于RSU和股票期权(Stock Option)
最近,和有些猎头沟通时,他们提到RSU的概念,特地搜了下,其和股票期权(Stock Option)差别如下: RSU 和Option 一般都是逐年实现的,比如Offer Letter签三年,上写的给你 ...
- 2018-2019-1 1723《程序设计与数据结构》第1&2周作业 总结
作业地址 第一周作业: https://edu.cnblogs.com/campus/besti/CS-IMIS-1723-2/homework/2092 提交情况如图: 第二周作业: https:/ ...
- JS 获取浏览器的宽和高
网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...
- Python3基础 set add 向集合中加入新的元素
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- luogu1049装箱问题
装箱问题 传送门 一个箱子容量为V//容量 同时有n个物品//n个 体积&&价值 要求n个物品中任取若干个装入箱内,使箱子的剩余空间为最小// v减去价值最大 */ #include& ...
- JSON类库Jackson与JSON-lib性能对比[转]
Jackson:http://jackson.codehaus.org/ JSON-lib:http://json-lib.sourceforge.net/ Gson:http://code.goog ...