C# 消费者消费RabbitMQ消息,读取后断开连接
时间: 2024-09-13 07:10:20 浏览: 45
基于Java语言的RabbitMQ生产者和消费者设计源码
在C#中,消费者消费RabbitMQ消息的过程通常涉及到使用RabbitMQ.Client这个库。RabbitMQ.Client提供了.NET环境下与RabbitMQ服务器交互的API。一个消费者读取消息后可能会断开连接的原因可能是为了节省资源或者根据特定的应用逻辑。下面是一个简化的示例,介绍如何使用RabbitMQ.Client在C#中创建消费者、接收消息,并在读取消息后关闭连接。
```csharp
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
class Program
{
static void Main()
{
// 创建连接工厂,设置RabbitMQ服务器的地址
var factory = new ConnectionFactory() { HostName = "localhost" };
// 创建连接,并且打开连接到RabbitMQ服务器
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 = System.Text.Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
// 执行完业务逻辑后,关闭连接
channel.Close();
connection.Close();
};
// 开始接收消息
channel.BasicConsume(queue: "hello",
autoAck: true,
consumer: consumer);
// 阻塞主线程,防止程序退出
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
}
```
在这个例子中,我们首先创建了连接工厂,并指定了RabbitMQ服务器的地址。然后,我们创建了一个连接,并从这个连接中打开一个通道。我们声明了一个队列,并创建了一个消费者来监听这个队列的消息。当消费者接收到消息时,它会处理消息并打印到控制台,然后关闭通道和连接。
阅读全文