ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RabbitMQ 生产者与消费者Code

2022-09-08 07:30:09  阅读:220  来源: 互联网

标签:Code Console 生产者 factory RabbitMQ WriteLine using channel


Nuget引入RabbitMQ Client

 

消费者:

// See https://aka.ms/new-console-template for more information
using RabbitMQ.Client;
using System.Text;

Console.WriteLine("Hello, World!");

string dir = AppDomain.CurrentDomain.BaseDirectory;
string? consumerName = Path.GetFileName(Path.GetDirectoryName(dir));

ConnectionFactory factory= new ConnectionFactory(); //创建链接工厂
factory.HostName = "192.168.8.21";
factory.UserName = "yangpeng";
factory.Password = "yangpeng";
factory.Port = 5677; //默认端口号是:5672
factory.AutomaticRecoveryEnabled = true;

using (IConnection connection = factory.CreateConnection())
{
    using (IModel channel = connection.CreateModel())
    {
        //创建队列
        channel.QueueDeclare(queue: "OnlyProducerMessageYangpeng", durable: true, exclusive: false, autoDelete: false, arguments: null);
        //创建交换机
        channel.ExchangeDeclare(exchange: "OnlyProducerMessageExChangeYangpeng", type: ExchangeType.Direct, durable: true, autoDelete: false, arguments: null);
        //将队列和交换机绑定
        channel.QueueBind(queue: "OnlyProducerMessageYangpeng", exchange: "OnlyProducerMessageExChangeYangpeng", routingKey: String.Empty, arguments: null);
    
        Console.ForegroundColor=ConsoleColor.Red;
        Console.WriteLine($"生产者{consumerName}已经准备就绪");

        int i = 1;

        while (i <= 1000)
        {
            string message = $"{consumerName}生成者发送第{i}条消息;";
            byte[] body=Encoding.UTF8.GetBytes(message);
            channel.BasicPublish(exchange: "OnlyProducerMessageExChangeYangpeng", routingKey: string.Empty, basicProperties: null, body: body);
            Console.WriteLine($"消息已发送{i}条");
            i++;
            Thread.Sleep(500);
        }
    }
}

  

生产者:

// See https://aka.ms/new-console-template for more information
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Text;

Console.WriteLine("Hello, World!");

string dir = AppDomain.CurrentDomain.BaseDirectory;
string? consumerName = Path.GetFileName(Path.GetDirectoryName(dir));

ConnectionFactory factory = new ConnectionFactory(); //创建链接工厂
factory.HostName = "192.168.8.21";
factory.UserName = "yangpeng";
factory.Password = "yangpeng";
factory.Port = 5677; //默认端口号是:5672

using (IConnection connection = factory.CreateConnection())  //基于链接工厂创建练级
{
    using (var channel = connection.CreateModel()) //基于链接创建信道
    {
        Console.ForegroundColor = ConsoleColor.Green;
        try
        {
            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += (model, ea) =>
            {
                var body = ea.Body;
                var message = Encoding.UTF8.GetString(body.ToArray());
                Console.WriteLine($"{consumerName}成功接受到消息,消息内容为:{message}");
            };
            channel.BasicConsume(queue: "OnlyProducerMessageYangpeng", autoAck: true, consumer: consumer);
            Console.WriteLine("Press[enter] to exit.");
            Console.ReadLine();

        }
        catch (Exception ex) {

            Console.WriteLine(ex.Message);
        }
    }
}

  

标签:Code,Console,生产者,factory,RabbitMQ,WriteLine,using,channel
来源: https://www.cnblogs.com/yangpengNetCore/p/16667960.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有