zoukankan      html  css  js  c++  java
  • RabbitMQ使用交换机处理异步消息队列案例

    RabbitMQ使用交换机处理异步消息队列案例

    RabbitMQ使用交换机处理异步消息队列案例的安装环境可以参考 RabbitMQ环境准备/环境搭建

    本片在RabbitMQ环境已有的基础上讲述RabbitMQ使用交换机处理异步消息队列具体过程

    1、新建.NET Core console控制台项目ConsoleRabbitMQ项目(生产者 productor,即产生消息的)以及ConsoleRabbitMQ01项目(consumer消费者,即使用消息的)

    2、对控制台项目使用NuGet程序管理包添加RabbitMQ.Client

    3、控制台项目ConsoleRabbitMQ项目的Program代码如下 

    using RabbitMQ.Client;
    using System;
    
    namespace ConsoleRabbitMQ
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("RabbitMQ 生产者开始。。。生产。。。!");
    
                #region RabbitMQ 生产者
                var connectionFactory = new ConnectionFactory()
                {
                    HostName = "localhost",
                    UserName = "guest",
                    Password = "guest"
                };
                using (var connection = connectionFactory.CreateConnection())
                {
                    using var channel = connection.CreateModel();
                    channel.QueueDeclare("myqueue", true, false, false, null);
                    channel.ExchangeDeclare("myexchange", ExchangeType.Direct, true, false, null);
                    channel.QueueBind("myqueue", "myexchange", "myexchangekey", null);
                    for (int i = 0; i < 100; i++)
                    {
                        var body = System.Text.Encoding.UTF8.GetBytes($"这是发布的数据。{i}。");
                        channel.BasicPublish("myexchange", "myexchangekey", null, body);
                        System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
                    }
                }
    
                #endregion
                Console.WriteLine("RabbitMQ 输入任何字符退出。。");
                Console.Read();
            }
        }
    }

    4、控制台项目ConsoleRabbitMQ01项目的Program代码如下

    using RabbitMQ.Client;
    using System;
    using RabbitMQ.Client.Events;
    
    namespace ConsoleRabbitMQ01
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("RabbitMQ 消费者开始。。。消费。。。!");
    
                #region RabbitMQ 消费者
                var connectionFactory = new ConnectionFactory()
                {
                    HostName = "localhost",
                    UserName = "guest",
                    Password = "guest"
                };
                using (var connection = connectionFactory.CreateConnection())
                {
                    using var channel = connection.CreateModel();
                    channel.QueueDeclare("myqueue", true, false, false, null);
                    channel.ExchangeDeclare("myexchange", ExchangeType.Direct, true, false, null);
                    channel.QueueBind("myqueue", "myexchange", "myexchangekey", null);
                    var received = new EventingBasicConsumer(channel);
                    received.Received += (sender, e) =>
                    {
                        //手动确认,正常消费,通知消息中心,该条消息可以删除了
                        //channel.BasicAck(e.DeliveryTag, false);
                        var body = System.Text.Encoding.UTF8.GetString(e.Body.ToArray());
                        channel.BasicConsume("myqueue", true, received);
                    };
                }
                #endregion
                Console.WriteLine("RabbitMQ 输入任何字符退出。。");
                Console.Read();
            }
    
            private static void Received_Received(object sender, BasicDeliverEventArgs e)
            {
                throw new NotImplementedException();
            }
        }
    }

    5、启动RabbitMQ服务,输入命令:rabbitmq-service start

    6、分别启动ConsoleRabbitMQ.exe和ConsoleRabbitMQ01.exe这个两个项目

    浏览器中输入:http://localhost:15672/#/,点击Connections,Channels,Queues可以查看相关信息

  • 相关阅读:
    CSS cursor 属性笔记
    sql 不等于 <>
    去掉时间中的时分秒
    ref 和 out区别
    关于闭包(未完待续)
    面向对象——多态(摘)
    SQL Service 数据库 基本操作 视图 触发器 游标 存储过程
    遍历winform 页面上所有的textbox控价并赋值string.Empty
    关于Html 和Xml 区别(备忘)
    python之面向对象进阶
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/13413100.html
Copyright © 2011-2022 走看看