zoukankan      html  css  js  c++  java
  • RabbitMQ(三)——简单模式

    RabbitMQ系列

    RabbitMQ(一)——简介

    RabbitMQ(二)——模式类型

    RabbitMQ(三)——简单模式

    RabbitMQ(四)——工作队列模式

    RabbitMQ(五)——发布订阅模式

    RabbitMQ(六)——路由模式

    RabbitMQ(七)——主题模式

    RabbitMQ(八)——消息确认

    RabbitMQ(九)——消息持久化

    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条。

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

    附上Demo地址:https://github.com/1164887865/RabbitMQDemo

  • 相关阅读:
    Quartus II -----破解
    博客诞生
    OpenMPI 学习笔记(一)并行计算机和分布式计算
    信息安全(1):安全策略
    认证
    SSL/TLS 和Https
    IPSec 网络协议安全
    C# 快速高效率复制对象另一种方式 表达式树
    C语言学习指针和数组2
    C语言学习二维数组
  • 原文地址:https://www.cnblogs.com/zousc/p/12725453.html
Copyright © 2011-2022 走看看