.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 ...
随机推荐
- Asp.net MVC 通过自定义ControllerFactory实现构造器注入
一.重写ControllerFactory的GetControllerInstance ControllerFactory是asp.net中用于在运行时构造Controller的工厂 ,默认使用的工厂 ...
- Linux基础命令---tune2fs
tune2fs tune2fs允许系统管理员在Linux ext2.ext3或ext4文件系统上调整各种可调的文件系统参数.这些选项的当前值可以使用-l选项显示,也可以通过使用dumpe2fs (8) ...
- javashop技术培训总结,架构介绍,Eop核心机制
javashop技术培训一.架构介绍1.Eop核心机制,基于spring的模板引擎.组件机制.上下文管理.数据库操作模板引擎负责站点页面的解析与展示组件机制使得可以在不改变核心代码的情况下实现对应用核 ...
- Web API设计方法论--比较完整的web api 开发过程
为Web设计.实现和维护API不仅仅是一项挑战:对很多公司来说,这是一项势在必行的任务.本系列将带领读者走过一段旅程,从为API确定业务用例到设计方法论,解决实现难题,并从长远的角度看待在Web上维护 ...
- gcc与glibc关系
glibc是什么,以及与gcc的关系? glibc是gnu发布的libc库,也即c运行库.glibc是linux 系统中最底层的api(应用程序开发接口),几乎其它任何的运行库都会倚赖于glibc.g ...
- 20145310《网络对抗技术》Exp6 信息搜集技术
实验内容 本次实验的目标是掌握信息搜集的最基础技能.具体有 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 ( ...
- 20145333茹翔 Exp5 Adobe阅读器漏洞攻击
20145333茹翔 Exp5 Adobe阅读器漏洞攻击 实验过程 主机为kali的ip地址为:192.168.1.111.靶机windows xp 的ip地址为:192.168.1.110 使用命令 ...
- tensorflow mnist 给一张手写字辨别
https://www.jianshu.com/p/db2afc0b0334 https://blog.csdn.net/xxzhangx/article/details/54563574
- FSMC(STM32)
(一)FSMC:Flexible Static Memory Controller,可变(灵活)静态存储控制器 小容量产品是指闪存存储器容量在1 6K至32K 字节之间的STM32F101xx.STM ...
- MFC、Qt、C#跨线程调用对象
MFC.Qt.C#都是面向对象的编程库 1.MFC不允许跨线程调用对象,即线程只能调用它本身分配了空间的对象 In a multi-threaded application written using ...