Skip to content
欢迎扫码关注公众号

.NET 中使用 RabbitMQ

  1. 新建一个发送消息的控制台工程 FirstRabbitMQSend

    cs
    using RabbitMQ.Client;
    using System;
    using System.Text;
    
    namespace FirstRabbitMQSend
    {
        class Program
        {
            // 交换器名
            const string EXCHANGE_NAME = "hello.exchange";
            // 队列名
            const string QUEUE_NAME = "hello.queue";
    
            static void Main(string args)
            {
                // 定义连接工厂
                var factory = new ConnectionFactory() {
                    HostName ="localhost",
                    UserName = "liujj",
                    Password = "AAA@111",
                };
                // 连接到 RabbitMQ
                using (var connection = factory.CreateConnection())
                {
                    // 获取信道
                    using (var channel  = connection.CreateModel())
                    {
                        // 声明交换器
                        channel.ExchangeDeclare(
                            exchange: EXCHANGE_NAME,
                            type: "direct",
                            durable: true);
                        // 声明队列
                        channel.QueueDeclare(
                            queue: QUEUE_NAME,
                            durable: true,
                            exclusive: false,
                            autoDelete: false,
                            arguments: null);
                        // 绑定交换器到队列
                        channel.QueueBind(
                            queue: QUEUE_NAME,
                            exchange: EXCHANGE_NAME,
                            routingKey: QUEUE_NAME);
                        // 创建消息
                        string message = "Hello, World!";
                        var body = Encoding.UTF8.GetBytes(message);
                        // 发布消息
                        channel.BasicPublish(
                            exchange: EXCHANGE_NAME,
                            routingKey: QUEUE_NAME,
                            basicProperties: null,
                            body: body);
                        Console.WriteLine("set {0}", message);
                    }
                }
            }
        }
    }
  2. 新建一个接收的控制台工程 FirstRabbitMQReceive

    cs
    using RabbitMQ.Client;
    using RabbitMQ.Client.Events;
    using System;
    using System.Text;
    
    namespace FirstRabbitMQReceive
    {
        class Program
        {
            // 交换器名
            const string EXCHANGE_NAME = "hello.exchange";
            // 队列名
            const string QUEUE_NAME = "hello.queue";
    
            static void Main(string args)
            {
                // 定义连接工厂
                var factory = new ConnectionFactory()
                {
                    HostName = "localhost",
                    UserName = "liujj",
                    Password = "AAA@111",
                };
                // 连接到 RabbitMQ
                using (var connection = factory.CreateConnection())
                {
                    // 获得信道
                    using (var channel = connection.CreateModel())
                    {
                        // 声明交换器
                        channel.ExchangeDeclare(
                            exchange: EXCHANGE_NAME,
                            type: "direct",
                            durable: true);
                        // 声明队列
                        channel.QueueDeclare(
                            queue: QUEUE_NAME,
                            durable: true,
                            exclusive: false,
                            autoDelete: false,
                            arguments: null);
                        // 绑定交换器到队列
                        channel.QueueBind(
                            queue: QUEUE_NAME,
                            exchange: EXCHANGE_NAME,
                            routingKey: QUEUE_NAME);
                        // 声明消费者
                        var consumer = new QueueingBasicConsumer(channel);
                        // 订阅消费者
                        channel.BasicConsume(
                            queue: QUEUE_NAME,
                            noAck: true,
                            consumer: consumer);
                        Console.WriteLine("waiting for message.");
                        while (true)
                        {
                            // 消费消息
                            var ea = consumer.Queue.Dequeue() as BasicDeliverEventArgs;
                            var body = ea.Body;
                            var message = Encoding.UTF8.GetString(body);
                            Console.WriteLine("Received {0}", message);
                        }
                    }
                }
            }
        }
    }

参考

  1. 在 Windows 上安装 Rabbit MQ 指南

  2. .NET 环境中使用 RabbitMQ

Page Layout Max Width

Adjust the exact value of the page width of VitePress layout to adapt to different reading needs and screens.

Adjust the maximum width of the page layout
A ranged slider for user to choose and customize their desired width of the maximum width of the page layout can go.

Content Layout Max Width

Adjust the exact value of the document content width of VitePress layout to adapt to different reading needs and screens.

Adjust the maximum width of the content layout
A ranged slider for user to choose and customize their desired width of the maximum width of the content layout can go.