欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

RabbitMQ的第一次亲密接触

程序员文章站 2023-11-11 08:16:22
企业应用系统,如果系统之间的通信、集成与整合,尤其当面临异构系统时,那么需要分布式的调用与通信。系统中一般会有很多对实时性要求不高但零零碎碎且耗时的地方,比如发送短信,邮件提醒,记录用户操作日志等,在用户访问量比较大的情况下,对系统压力比较大。 面对这些问题,我们一般会将这些请求,放在消息队列MQ中 ......

           企业应用系统,如果系统之间的通信、集成与整合,尤其当面临异构系统时,那么需要分布式的调用与通信。系统中一般会有很多对实时性要求不高但零零碎碎且耗时的地方,比如发送短信,邮件提醒,记录用户操作日志等,在用户访问量比较大的情况下,对系统压力比较大。

        面对这些问题,我们一般会将这些请求,放在消息队列mq中处理;异构系统之间使用消息进行通讯。

        mq全称为message queue, 消息队列(mq)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

       下安装服务端,由于rabbitmq使用erlang语言编写,所以先安装erlang语言运行环境,按照网上的操作要求安装和配置环境变量,命令行执行指令浏览器如下管理界面:

RabbitMQ的第一次亲密接触

因为我要用c#语言做个简单的验证,所以需要api支持,如下地址下载https://www.rabbitmq.com/releases/rabbitmq-dotnet-client/,版本很多,酌情下载

RabbitMQ的第一次亲密接触

引用rabbitmq.client.dll:

 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     }

    一个简单的测试就好了,注意在使用rabitmq之前,先对几个概念和知识点:生产、队列、消费、工作队列、轮训分发、消息响应、消息持久化、公平分发,网络有相关知识,就不详细解化了...

打开cmd切换到sbin目录下执行rabbitmqctl status\rabbitmq-service start\rabbitmqctl list_users等简单指令

好了,开始玩耍吧!