• .Net6下集成消息队列上RabbitMQ


    .Net中RabbitMQ的使用

    RabbitMQ

    代码演示

    生产者代码

    using RabbitMQ.Client;
    using System.Text;
    
    // 创建一个连接工厂
    var factory = new ConnectionFactory()
    {
        Uri = new Uri("amqp://guest:guest@localhost:5672")
    };
    // 工厂开始连接
    using(var connection = factory.CreateConnection())
    // 创建一个连接通道
    using(var channel = connection.CreateModel())
    {
            channel.QueueDeclare(queue: "hello",
                                 // 持久性 一直保持  直到消费者 消费队列
                             durable: true,
                                 // 独占
                             exclusive: false,
                                 autoDelete: false,
                                 arguments: null);
        
        // 发送的消息
        string message = "Hello World!";
            var body = Encoding.UTF8.GetBytes(message);
        
        // 基本发布 不指定交换
        channel.BasicPublish(exchange: "",
                             // 路由键   就是队列名称
                             routingKey: "hello",
                             // 基础属性
                             basicProperties: null,
                             // 传递的消息体
                             body: body);
       Console.WriteLine(" [x] Sent {0}", message);
      }
    
    Console.WriteLine(" Press [enter] to exit.");
    Console.ReadLine();

    消费者代码

    using RabbitMQ.Client;
    using RabbitMQ.Client.Events;
    using System.Text;
    
    // 创建一个连接工厂
    var factory = new ConnectionFactory()
    {
        Uri = new Uri("amqp://guest:guest@localhost:5672")
    };
    using(var connection = factory.CreateConnection())
    using(var channel = connection.CreateModel())
    {
        channel.QueueDeclare(queue: "hello",
                             durable: true,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);
    
    // 创建一个消费者基本事件
    var consumer = new EventingBasicConsumer(channel);
        consumer.Received += (model, ea) =>
        {
             var body = ea.Body.ToArray();
             var message = Encoding.UTF8.GetString(body);
             Console.WriteLine(" [x] Received {0}", message);
         };
        channel.BasicConsume(queue: "hello",
                             // 自动确认
                             autoAck: true,
                             consumer: consumer);
    
    Console.WriteLine(" Press [enter] to exit.");
    Console.ReadLine();

    环境安装

    docker下安装RabbitMQ镜像

     //第一步:制作docker 镜像
    docker run -d --hostname my-rabbit --name rabbitmq -p 15672:15672 - p 5672:5672 rabbitmq
    //第二步:这一段必须需要  否则网站起不来 其中 c71119561de6   为容器ID
    docker exec -it c71119561de6  rabbitmq-plugins enable rabbitmq_management

    RabbitMQ是个轻量级,易部署的队列,我会根据官网指导,分享一系列常用使用技巧的,随时保持关注哦~

  • 相关阅读:
    结对作业——WordCount进阶版
    个人作业2——WordCount
    软工网络16个人作业1
    request内置对象在JSP
    Servlet处理表单
    Web-JSP表单字符验证
    201621123037 《Java程序设计》第14周学习总结
    201621123037 《Java程序设计》第13周学习总结
    转载 写了 35 年代码的老程序员的最大遗憾
    设计OA系统的用户-角色-权限分配
  • 原文地址:https://www.cnblogs.com/dongh/p/16404019.html
Copyright © 2020-2023  润新知