RabbitMq学习一入门篇(hello world)
简介
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java,也是众多消息队列中表现不俗的一员,作用就是提高系统的并发性,将一些不需要及时响应客户端且占用较多资源的操作,放入队列,再由另外一个线程,去异步处理这些队列,可极大的提高系统的并发能力。
安装
“hello world”(.NET中Rabbimq使用)
1.实例参考官网教程
2.使用官网提供的c#操作类库RabbitMQ.Client
我们先分别创建两个控制台程序 一个用来发送消息到rabbitmq 消息代理作为什么生产者;另外一个从中读取进行消费作为消费者。
如:p代表生成者,c代表消费者,中间的部分代表消息队列

生成者的代码如下:
public static void RunSend()
{
ConnectionFactory connectionFactory = new ConnectionFactory()
{
HostName = "192.168.35.129",
Port = ,
Password = ",
UserName = "mquser"
};
//建立连接rabbitmq 消息代理服务器。
using (IConnection conn = connectionFactory.CreateConnection())
{
//创建Channel对象
using (IModel channel = conn.CreateModel())
{
//声明队列
channel.QueueDeclare("hello", durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
//消息 ,此处是简单的字符串,你也可以定义复杂的消息体
string msg = "Hello World";
var body = Encoding.UTF8.GetBytes(msg);
//把消息放到队列中
channel.BasicPublish(exchange:"",
routingKey:"hello",
basicProperties:null,
body:body);
Console.WriteLine("send {0}",msg);
}
}
}
消费者的代码如下:
public static void RunReceive()
{
ConnectionFactory connectionFactory = new ConnectionFactory()
{
HostName = "192.168.35.129",
Port = ,
Password = ",
UserName = "mquser"
};
using (IConnection conn = connectionFactory.CreateConnection())
{
using (IModel channel = conn.CreateModel())
{
//注意:在 send.CS 中也声明了队列Hello,这里为什么要再次声明
//第一:QueueDeclare 实现了幂等性,创建的时候如果已经存在,就不会再次创建。
//第二:因为 两边都进行创建,不用考虑 生产者 和消费者 启动的顺序了。
channel.QueueDeclare("hello", durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
//创建事件驱动的消费者类型;建议使用此种方式,不要使用while(true)
//理由吗 哈哈 看看王清培的博客吧。不稳定不优雅。。。
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (sender, e) =>
{
var body = e.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
};
channel.BasicConsume(queue: "hello",
noAck: true,
consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
}
输出

好了rabbitmq入门篇讲完了,是不是很简单。
RabbitMq学习一入门篇(hello world)的更多相关文章
- RabbitMQ学习总结 第二篇:快速入门HelloWorld
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ学习总结 第一篇:理论篇
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- PHP学习笔记 - 入门篇(5)
PHP学习笔记 - 入门篇(5) 语言结构语句 顺序结构 eg: <?php $shoesPrice = 49; //鞋子单价 $shoesNum = 1; //鞋子数量 $shoesMoney ...
- PHP学习笔记 - 入门篇(4)
PHP学习笔记 - 入门篇(4) 什么是运算符 PHP运算符一般分为算术运算符.赋值运算符.比较运算符.三元运算符.逻辑运算符.字符串连接运算符.错误控制运算符. PHP中的算术运算符 算术运算符主要 ...
- PHP学习笔记 - 入门篇(3)
PHP学习笔记 - 入门篇(3) 常量 什么是常量 什么是常量?常量可以理解为值不变的量(如圆周率):或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.PHP中的常量分为自定义常量和系统常量 ...
- PHP学习笔记--入门篇
PHP学习笔记--入门篇 一.Echo语句 1.格式 echo是PHP中的输出语句,可以把字符串输出(字符串用双引号括起来) 如下代码 <?php echo "Hello world! ...
- netty深入学习之一: 入门篇
netty深入学习之一: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java NI ...
- Java工程师学习指南 入门篇
Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...
- Elasticsearch学习记录(入门篇)
Elasticsearch学习记录(入门篇) 1. Elasticsearch的请求与结果 请求结构 curl -X<VERB> '<PROTOCOL>://<HOST& ...
随机推荐
- java中的流程控制语句总结
程序的结构分类: 顺序结构:按照写代码的顺序 一次执行 选择结构:根据条件的不同有选择的执行不同的代码 循环结构:在一定条件下 反复执行某一片代码 选择结构: 也叫分支结构 根据条件的不同,有选择的执 ...
- 用C写一个web服务器(四) CGI协议
* { margin: 0; padding: 0 } body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; colo ...
- Ajax请求(二)--JQuery的Ajax请求方法
JQuery库的Ajax请求的几种方法: 1. load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中. 参数含义: url (String ...
- ssh隧道
最近有需求使用ssh隧道,顺便研究了下,以下记录一下大概说明 ssh隧道顾名思义在可以通过ssh连接的server之间建立加密隧道,常用于突破网络限制 常用三种端口转发模式:本地端口转发,远程端口转发 ...
- bootstrap中的下拉菜单
下拉菜单必要的代码: <div class="container"> <div class="dropdown"> <butt ...
- Realm的简单使用
Realm个人理解: 它主要是一套移动端数据库框架,将对数据库表的操作转换为对对象的操作,如果是学过Java ORM框架的同学使用Realm起来应该上手比较快一点.而且据我所知Realm不仅支持Obj ...
- Unity3D常用 API 之 Invoke 函数调用
1.金钱副本细节完善 1.1.宝箱自动掉落 给宝箱预制体添加刚体组件即可. 1.2.实现按键宝箱批量掉落 ①将实例化生成宝箱的代码单独封装成一个函数: ②使用 for 循环,批量生成宝箱. 按一次z键 ...
- Python的初步认识与基本模块的导入
由于公司开发都使用了Python,老大说要每个人都会,前端也要学,所以就看着老大写的博客一步步来了,但是对于小白而言,一门新的语言总得跳许多坑.尤其是Mac安装Python,各种坑. 坑一.由于Mac ...
- DDD领域驱动之干活(四)补充篇!
距离上一篇DDD系列完结已经过了很长一段时间,项目也搁置了一段时间,想想还是继续完善下去. DDD领域驱动之干货(三)完结篇! 上一篇说到了如何实现uow配合Repository在autofac和au ...
- 多个form表单的提交
if(zhengchang_stop&&no_zhengchang_wancheng&&respon_info_lists){ $('form[name="f ...
