内容简介:1、序言对于一个网站系统的评估,大家说的最多的就是:高可用,高并发。对于高可用,比如全年无故障率99.99%;比如热发布等等。对于高并发,按tps来衡量。对于高并发的解决方案大多会提到消息队列系统。那我们先选定一个常用的队列系统来看看如何使用,然后再总结消息队列系统的主要功能,最后能根据实际业务情况开发出适合自己场景的消息队列系统。我们先从认识RabbitMQ队列系统开始。
1、序言
对于一个网站系统的评估,大家说的最多的就是:高可用,高并发。对于高可用,比如全年无故障率99.99%;比如热发布等等。对于高并发,按tps来衡量。对于高并发的解决方案大多会提到消息队列系统。那我们先选定一个常用的队列系统来看看如何使用,然后再总结消息队列系统的主要功能,最后能根据实际业务情况开发出适合自己场景的消息队列系统。
我们先从认识RabbitMQ队列系统开始。
RabbitMQ是一个在AMQP(即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制)基础上完成的,可复用的企业消息系统,是一个开源的项目。
2、环境准备
博主电脑是windows的,所以以windows7 64位环境,并且使用.net core作为demo程序演示。
安装Erlang
下载地址,
官网: http://www.erlang.org/downloads
本文示例程序使用的下载地址: https://download.csdn.net/download/yysyangyangyangshan/10925984
安装RabbitMQ
下载地址,
官网: http://www.rabbitmq.com/install-windows.html ,
本文示例程序使用的下载地址: https://download.csdn.net/download/yysyangyangyangshan/10925911
安装成功后,在开始菜单可见,如图
找到 RabbitMQ Comman Prompt,运行。依次运行如下命令:
rabbitmq-service install
rabbitmq-service enable
rabbitmq-service start
执行结果分别如下所示:
然后,执行
rabbitmq-plugins enable rabbitmq_management即可成功安装,
使用默认账号密码(guest/guest)登录http://localhost:15672/即可。
本地管理页面.png
这样,环境准备OK了。
3、做一个Demo
消息队列的模型是这样的:
3.1、消息的发送和接收
用.net core 来实现发送和接收端的简单逻辑。在实现前先要下载一个dll,RabbitMQ的.net core驱动。
下载地址: https://download.csdn.net/download/yysyangyangyangshan/10925942
.net core实现接收端的逻辑,
新建一个控制台程序:RabbitMQReceiver,整体结构如下,
主要代码:
class Program { static void Main(string[] args) { //1.实例化连接工厂 var factory = new ConnectionFactory() { HostName = "localhost" }; //2. 建立连接 using (var connection = factory.CreateConnection()) { //3. 创建信道 using (var channel = connection.CreateModel()) { //4. 申明队列 channel.QueueDeclare(queue: "myQueueReceiver", durable: false, exclusive: false, autoDelete: false, arguments: null); //5. 构造消费者实例 var consumer = new EventingBasicConsumer(channel); //6. 绑定消息接收后的事件委托 consumer.Received += (model, ea) => { var message = Encoding.UTF8.GetString(ea.Body); Console.WriteLine(" [x] 接收 {0}", message); Thread.Sleep(6000);//模拟耗时 Console.WriteLine(" [x] 结束"); }; //7. 启动消费者 channel.BasicConsume(queue: "myQueueReceiver", noAck: true, consumer: consumer); Console.WriteLine(" 按 [回车] 退出程序."); Console.ReadLine(); } } } }
.net core来实现发送端的逻辑,
新建一个控制台程序:RabbitMQSender,整体结构如下,
主要代码:
class Program { static void Main(string[] args) { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { //3. 创建信道 using (var channel = connection.CreateModel()) { //4. 申明队列 channel.QueueDeclare(queue: "myTestQueueSender", durable: false, exclusive: false, autoDelete: false, arguments: null); //5. 构建byte消息数据包 string message = args.Length > 0 ? args[0] : "你好,欢迎使用RabbitMQ!"; var body = Encoding.UTF8.GetBytes(message); //6. 发送数据包 //routingKey必须是接收的队列名。 //本程序为例,队列名是:myQueueReceiver channel.BasicPublish(exchange: "", routingKey: "myQueueReceiver", basicProperties: null, body: body); Console.WriteLine(" [x] 发送 {0}", message); Console.ReadLine(); } } } }
注意RabbitMQSender中,routingKey: "myQueueReceiver",一定是接收方的队列名。
先执行接收端,再执行发送端,如下图
发送端,
接收端
可多次启动sender端发送消息,比如,在本地使用了两次sender程序,在管理页面会有记录,
在本地管理页面中可以看到消息投递的记录,
代码下载: https://download.csdn.net/download/yysyangyangyangshan/10926426
以上所述就是小编给大家介绍的《RabbitMQ初探 001——初识RabbitMQ 01》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。