.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 ...
随机推荐
- Kafka基本操作
cd kafka_2.11-0.11.0.1 bin/zookeeper-server-start.sh config/zookeeper.properties bin/kafka-server-st ...
- Java设计模式应用——观察者模式
告警结果产生后,可能需要发送短信,邮件,故障管理系统.这些转发操作不应当影响告警生成入库,并且类似事件可能根据不同场景,客户习惯不同,此时,使用观察者模式则可以很好的适应上述场景. 观察者模式应当包括 ...
- firefox历史版本下载链接
http://ftp.mozilla.org/pub/firefox/releases firefox版本42以上的用不了firebug,需要装版本42以下的,否则用不了
- P3313 [SDOI2014]旅行
P3313 [SDOI2014]旅行 树链剖分+动态线段树(并不是lct) 显然的,我们对于每一个宗教都要维护一个线段树. (那么空间不是爆炸了吗) 在这里引入:动态开点线段树 就是需要的点开起来,不 ...
- velocity #parse抽象重用部分组件
在某些时候,处于重用的目的,我们会选择将可以重用的部分内容剥离在单独的模板文件中,比如对于查询页面的表格部分,因为现在很多的条件可能是通过弹出查询框的方式来实现,而作为普通页面的时候,他们会有更多的功 ...
- STM32各个文件介绍、uCOSII文件介绍
(1)core_cm3.c , core_cm.h:获取设置CM3内核,配置一些内核寄存器,用到CM3核的都需要: (2)stm32f10x.h 和 system_stm32f10x.c , syst ...
- POJ 3480 John(SJ定理博弈)题解
题意:n堆石头,拿走最后一块的输 思路:SJ定理:先手必胜当且仅当:(1)游戏的SG函数不为0且游戏中某个单一游戏的SG函数大于1:(2)游戏的SG函数为0且游戏中没有单一游戏的SG函数大于1. 参考 ...
- attr返回被选元素的属性值
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Spring batch的学习
Spring batch是用来处理大量数据操作的一个框架,主要用来读取大量数据,然后进行一定处理后输出成指定的形式. Spring batch主要有以下部分组成: JobRepository ...
- 在线js编程网站 精品版
https://jsfiddle.net/ 引自:http://www.ykmimi.com/tools.html