RabbitMQ的第一次亲密接触

150 阅读2分钟
企业应用系统,如果系统之间的通信、集成与整合,尤其当面临异构系统时,那么需要分布式的调用与通信。系统中一般会有很多对实时性要求不高但零零碎碎且耗时的地方,比如发送短信,邮件提醒,记录用户操作日志等,在用户访问量比较大的情况下,对系统压力比较大。
面对这些问题,我们一般会将这些请求,放在消息队列MQ中处理;异构系统之间使用消息进行通讯。
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
下安装服务端,由于RabbitMQ使用Erlang语言编写,所以先安装Erlang语言运行环境,按照网上的操作要求安装和配置环境变量,命令行执行指令浏览器如下管理界面:
因为我要用C#语言做个简单的验证,所以需要API支持,如下地址下载www.rabbitmq.com/releases/ra…,版本很多,酌情下载
引用RabbitMQ.Client.dll:
[url=][/url]

1
static
void
Main(
string
[] args)
2
{
3
var
factory =
new
ConnectionFactory();
4
factory.HostName =
"
localhost
"
;
//
RabbitMQ服务在本地运行
5
factory.UserName =
"
guest
"
;
//
用户名
6
factory.Password =
"
guest
"
;
//
密码
7
8
using
(
var
connection = factory.CreateConnection())
9
{
10
using
(
var
channel = connection.CreateModel())
11
{
12
channel.QueueDeclare(
"
hello
"
,
false
,
false
,
false
,
null
);
//
创建一个名称为hello的消息队列
13
string
message =
"
Hello World
"
;
//
传递的消息内容
14
var
body = Encoding.UTF8.GetBytes(message);
15
channel.BasicPublish(
""
,
"
hello
"
,
null
, body);
//
开始传递
16
Console.WriteLine(
"
已发送: {0}
"
, message); Console.ReadLine();
17
}
18
}
19
}
[url=][/url]


一个简单的测试就好了,注意在使用RabitMQ之前,先对几个概念和知识点:生产、队列、消费、工作队列、轮训分发、消息响应、消息持久化、公平分发,网络有相关知识,就不详细解化了...
打开cmd切换到sbin目录下执行rabbitmqctl status\rabbitmq-service start\rabbitmqctl list_users等简单指令
好了,开始玩耍吧!