当前位置:首页C# > 正文

C# RabbitMQ 消息队列编程

作者:野牛程序员:2023-11-22 12:20:22C#阅读 2710

C# RabbitMQ 消息队列编程:

使用C#编写RabbitMQ消息队列的代码涉及到RabbitMQ客户端库的使用。在C#中,可以使用RabbitMQ.Client库来与RabbitMQ进行交互。以下是一个简单的示例,展示了如何在C#中使用RabbitMQ发送和接收消息。

发送消息的代码:

using RabbitMQ.Client;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        // 创建连接工厂
        var factory = new ConnectionFactory() { HostName = "localhost" };

        // 创建连接
        using (var connection = factory.CreateConnection())
        {
            // 创建通道
            using (var channel = connection.CreateModel())
            {
                // 声明一个队列
                channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null);

                // 消息内容
                string message = "Hello, RabbitMQ!";
                var body = Encoding.UTF8.GetBytes(message);

                // 发送消息到队列
                channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);
                Console.WriteLine($" [x] Sent {message}");
            }
        }

        Console.WriteLine(" Press [enter] to exit.");
        Console.ReadLine();
    }
}

接收消息的代码:

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        // 创建连接工厂
        var factory = new ConnectionFactory() { HostName = "localhost" };

        // 创建连接
        using (var connection = factory.CreateConnection())
        {
            // 创建通道
            using (var channel = connection.CreateModel())
            {
                // 声明一个队列
                channel.QueueDeclare(queue: "hello", durable: false, 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 {message}");
                };

                // 启动消费者
                channel.BasicConsume(queue: "hello", autoAck: true, consumer: consumer);

                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadLine();
            }
        }
    }
}

这是一个简单的例子,使用默认的本地RabbitMQ服务器。确保已经安装了RabbitMQ,并且服务正在运行。可以根据需要修改连接工厂的主机名和队列的名称等参数。



野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击