gpt4 book ai didi

c# - RabbitMQ 异步支持

转载 作者:可可西里 更新时间:2023-11-01 08:03:26 28 4
gpt4 key购买 nike

RabbitMQ .NET 客户端有任何类型的异步支持吗?我希望能够异步连接和使用消息,但到目前为止还没有找到方法。

(对于消费消息,我可以使用 EventingBasicConsumer,但这不是一个完整的解决方案。)

只是为了提供一些背景信息,这是我目前如何使用 RabbitMQ 的示例(代码取 self 的博客):

var factory = new ConnectionFactory() { HostName = "localhost" };

using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("testqueue", true, false, false, null);

var consumer = new EventingBasicConsumer(channel);
consumer.Received += Consumer_Received;
channel.BasicConsume("testqueue", true, consumer);

Console.ReadLine();
}
}

最佳答案

Rabbit 支持使用 AsyncEventingBasicConsumer 类分派(dispatch)到异步消息处理程序。它的工作方式与 EventingBasicConsumer 类似,但允许您注册一个返回 Task 的回调。回调被分派(dispatch)到 RabbitMQ 客户端并等待返回的 Task

var factory = new ConnectionFactory
{
HostName = "localhost",
DispatchConsumersAsync = true
};

using(var connection = cf.CreateConnection())
{
using(var channel = conn.CreateModel())
{
channel.QueueDeclare("testqueue", true, false, false, null);

var consumer = new AsyncEventingBasicConsumer(model);

consumer.Received += async (o, a) =>
{
Console.WriteLine("Message Get" + a.DeliveryTag);
await Task.Yield();
};
}

Console.ReadLine();
}

关于c# - RabbitMQ 异步支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31961261/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com