RabbitMQ——简单模式

Posted zousc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ——简单模式相关的知识,希望对你有一定的参考价值。

前言

  简单模式中有一个生产者一个消费者,这里分别是SimpleServer,SimpleClient.SimpleServer作为生产者,给队列发送消息,而SimpleClient作为消费者去消费消息。每条消息都是消费完就没了。

 

 

创建项目

  SimpleServer:

    1. 创建工厂ConnectionFactory并初始化,这里连接的是本地,远程只需改变地址即可,账号密码默认为guest。
    2. 使用工厂创建一个连接对象。
    3. 通过连接对象创建一个通道。
    4. 声明一个队列,用来存放消息,这里给队列命名为simple。
    5. 使用IModel.BasicPublish()向队列发布消息。

 

技术图片
static void Main(string[] args)
        {
            //1.创建连接工厂
            ConnectionFactory factory = new ConnectionFactory()
            {
                HostName = "127.0.0.1",
                UserName = "guest",
                Password = "guest"
            };
            //2.创建连接
            var connection = factory.CreateConnection();
            //3.创建管道
            var channel = connection.CreateModel();
            //4.声明队列
            channel.QueueDeclare("simple", false, false, false, null);

            string msg = "这是一条消息";
            var sendByte = Encoding.UTF8.GetBytes(msg);
            //5.发布消息
            channel.BasicPublish("", "simple", null, sendByte);

            channel.Close();
            connection.Close();
        }
View Code

 

 

 

  SimpleClient:

    1. 初始化工厂
    2. 创建连接
    3. 创建通道
    4. 创建消费者
    5. 开始消费消息
    6. 接收消息做一些事情...
技术图片
static void Main(string[] args)
        {
            //初始化工厂
            ConnectionFactory factory = new ConnectionFactory()
            {
                HostName = "127.0.0.1",
                UserName = "guest",
                Password = "guest"
            };
            //创建连接
            using (IConnection connection = factory.CreateConnection())
            {
                using (IModel channel = connection.CreateModel())
                {
                    //声明队列
                    channel.QueueDeclare("simple", false, false, false, null);
                    //创建消费者对象
                    var consumer = new EventingBasicConsumer(channel);

                    consumer.Received += (model, e) =>
                    {
                        byte[] message = e.Body.ToArray();
                        Console.WriteLine("接收消息:" + Encoding.UTF8.GetString(message));
                        //返回消息确认
                        channel.BasicAck(e.DeliveryTag, false);
                    };
                    //消费者开启监听
                    channel.BasicConsume("simple", false, consumer);
                    Console.ReadLine();
                }
            }
        }
View Code

 

 

效果:

  我们先改下生产者发布消息的代码,发布10条消息

  

for (int i = 0; i < 10; i++)
{
    string msg = $"第{i+1}条消息";
    //5.发布消息
    channel.BasicPublish("", "simple", null, Encoding.UTF8.GetBytes(msg));
    Console.WriteLine($"已发送消息:{msg}");
}

 

  现在我们打开本地RabbitMQ管理后台 http://localhost:15672/

  启动SimpleServer程序发布消息后出现十条记录:

  技术图片

  

  开始消费消息:

  技术图片

  消费后simple队列里的消息从10条变成了0条。

   本篇到这就完结了,下一篇工作队列模式

 

以上是关于RabbitMQ——简单模式的主要内容,如果未能解决你的问题,请参考以下文章

消息队列RabbitMQ核心:简单(Hello World)模式队列(Work Queues)模式发布确认模式

RabbitMQ之消息模式简单易懂,超详细分享

万字长文图文详解Spring整合RabbitMQ(简单模式,广播模式,路由模式,通配符模式,消息可靠性投递,TTL)

RabbitMQ六种队列模式-简单队列模式

RabbitMQ

近九万字图文详解RabbitMQ