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 官网。