内容简介: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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
About Face 3
Alan Cooper、Robert Reimann、David Cronin / John Wiley & Sons / 2007-5-15 / GBP 28.99
* The return of the authoritative bestseller includes all new content relevant to the popularization of how About Face maintains its relevance to new Web technologies such as AJAX and mobile platforms......一起来看看 《About Face 3》 这本书的介绍吧!