zoukankan      html  css  js  c++  java
  • RabbitMQ简单实践(一)

    一、RabbitMQ的简介和安装

    1.1 RabbitMQ的安装

    到官网下载最新的安装包,和Erlang的安装包,我的安装包如下图

    先安装Erlang,再安装RabbitMQ,一直点击下一步就可以了。
    安装完成之后,我们需要启用管理功能,找到安装位置,进入到sbin文件夹,执行下列命令rabbitmq-plugins enable rabbitmq_management,如图:

    启用成功后,打开http://localhost:15672即可进入管理页面,用户名和密码均为guest至此安装完成,rabbitmq已经可以正常使用。

    1.2 RabbitMQ简介

    RabbitMQ是实现了AMQP协议的开源消息中间件。在我们日常开发中,可以帮助我们实现以下的常用功能:
    异步处理:批量数据异步处理
    应用解耦:串行任务并行化
    流量削峰:高负载任务负载均衡
    广播:基于发布/订阅模型实现一对多通信

    二、简单工作队列

    下面我们开始从代码聊起,写一个基于.netcore的demo来了解简单队列

    2.1、简单队列 Simple-queue模型

    简单队列的模型如下图:

    P:为生产者(Producer),为消息的发送方
    C:为消费者(Consumer),消费队列中的消息
    整个流程为,生产者生产消息,发布到队列(Queue)中;消费者监听这个队列,消费里面的消息;
    下面我们开始使用编写代码来完成上述过程,代码框架基于netcore3.1,并引用RabbitMQ.Client5.1.2包;

    2.2 与RabbitMQ建立连接

            public static IConnection GetConnection()
            {
                ConnectionFactory factory = new ConnectionFactory();
                factory.UserName = "guest";
                factory.Password = "guest";
                factory.HostName = "127.0.0.1";
                factory.Port = 5672;
                return factory.CreateConnection();
            }
    

    指定用户名、密码、地址端口等,使用CreateConnection方法即可创建连接;

    2.3、发送消息到队列

     public static void PublishMessage()
            {
                try
                {
                    var conn = GetConnection();
                    var channel = conn.CreateModel();
                    channel.QueueDeclare(QUEUE_NAME, false, false, false, null);
                    string msg = "hello simple queue!";
                    var body = Encoding.UTF8.GetBytes(msg);
                    channel.BasicPublish("", QUEUE_NAME, null, body);
                    channel.Close();
                    conn.Close();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    

    我们在队列里,收到了刚才发送的消息:

    2.4、监听队列接收消息

    收到消息后,我们需要消费者去获取取消息,并消费,代码如下:

    static void SimpleConsumer()
    		{
    			//创建连接
    			IConnection connection = MQUtils.GetConnection();
    			//创建通道
    			var channel = connection.CreateModel();
    			//事件基本消费者
    			EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
    			//接收到消息事件
    			consumer.Received += (ch, ea) =>
    			{
    				var message = Encoding.UTF8.GetString(ea.Body);
    				Console.WriteLine($"Simple Consumer 收到消息: {message},时间:{DateTime.Now}");
    			};
    			//启动消费者 设置为自动应答消息
    			channel.BasicConsume("queue_test", true, consumer);
    			Console.WriteLine("Simple Consumer 消费者已启动");
    			Console.ReadKey();
    			channel.Dispose();
    			connection.Close();
    		}
    

    运行程序,我们可以看到已经读取到了队列中的消息:

    同时,队列中的消息已经被消费:

    至此我们的简单队列,已经写完并演示完毕

    三、简单队列小结

    简单队列是最简单的工作模型,消费者和生产者通过RabbitMQ的队列解耦,大家各司其职,是学习rabbitmq入门的第一步。
    参考文章:
    1、Hello RabbitMQ 地址:https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html
    2、https://www.cnblogs.com/stulzq/p/7551819.html

  • 相关阅读:
    UTF8编码规则
    学习bat脚本的好网站
    ATL 中 USES_CONVERSION 的具体功能
    对销售代表的100个忠告
    linux下crontab的使用
    linux zip命令收藏
    如何从SCons中删除特定的文件
    努力奋斗,但不想像蚂蚁那样!
    你的成功在于你每天养成的习惯
    模板的语法
  • 原文地址:https://www.cnblogs.com/zqllove/p/12642680.html
Copyright © 2011-2022 走看看