rabbitmq.client 包介绍并举例

25 阅读1分钟

RabbitMQ.Client 是 .NET 平台上用于操作 RabbitMQ 消息队列的官方客户端库。它支持 AMQP 协议,允许应用程序与 RabbitMQ 服务器进行消息的发送、接收、队列管理等操作,广泛用于分布式系统、微服务、异步消息处理等场景。

主要特点:

  • 支持消息发布/订阅、队列、交换机等 RabbitMQ 核心功能
  • 支持持久化、事务、确认机制
  • 兼容 AMQP 0-9-1 协议
  • 提供同步和异步 API

用法举例

1. 发送消息(生产者)

using RabbitMQ.Client;
using System.Text;

class Producer
{
    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("发送成功: " + message);
    }
}

2. 接收消息(消费者)

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

class Consumer
{
    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("收到消息: " + message);
        };

        channel.BasicConsume(queue: "hello", autoAck: true, consumer: consumer);

        Console.WriteLine("按任意键退出...");
        Console.ReadKey();
    }
}

说明:

  • 生产者和消费者通过同一个队列(如 hello)进行消息传递。
  • 支持多种高级特性,如交换机、路由、持久化等。
  • 适合微服务、异步任务、事件驱动架构等场景。

更多用法可参考官方文档:RabbitMQ.Client 官网