C# 域.Net核心的RabbitMQ开放通道e返回消息
我正在使用RabbitMQ,并希望进行以下配置 打开一个频道,接收信息并返回我的BLL处理,但保持此频道打开 为此,我有一个服务类,其中我有publisher和consumer的方法,我的bll使用这些方法 我最大的问题是在自动确认中,我希望能够从bll控制它,但我需要在我的服务中创建的通道实例 有什么正确的方法吗 我可以将实例与消息一起返回吗C# 域.Net核心的RabbitMQ开放通道e返回消息,c#,.net-core,rabbitmq,C#,.net Core,Rabbitmq,我正在使用RabbitMQ,并希望进行以下配置 打开一个频道,接收信息并返回我的BLL处理,但保持此频道打开 为此,我有一个服务类,其中我有publisher和consumer的方法,我的bll使用这些方法 我最大的问题是在自动确认中,我希望能够从bll控制它,但我需要在我的服务中创建的通道实例 有什么正确的方法吗 我可以将实例与消息一起返回吗 public Task<List<string>> ConsumerRabbitMQ(string queeue, bool i
public Task<List<string>> ConsumerRabbitMQ(string queeue, bool isWork)
{
try
{
var message = new List<string>();
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: queeue,
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
try
{
var body = ea.Body.Span;
message.Add(Encoding.UTF8.GetString(body));
channel.BasicAck(ea.DeliveryTag, false);
}
catch (Exception ex)
{
var ff = channel;
CreateConnection();
channel.BasicNack(ea.DeliveryTag, false, true);
}
};
channel.BasicConsume(queue: queeue,
autoAck: false,
consumer: consumer);
}
return Task.FromResult(message);
}
catch (Exception)
{
return null;
throw;
}
}
public Task ConsumerRabbitMQ(字符串queue,bool-isWork)
{
尝试
{
var message=新列表();
var factory=new ConnectionFactory(){HostName=“localhost”};
使用(var connection=factory.CreateConnection())
使用(var channel=connection.CreateModel())
{
channel.QueueDeclare(队列:queue,
持久性:错误,
独家:假,,
自动删除:false,
参数:null);
var消费者=新事件基本消费者(渠道);
消费者.已接收+=(型号,ea)=>
{
尝试
{
var body=ea.body.Span;
Add(Encoding.UTF8.GetString(body));
channel.BasicAck(ea.DeliveryTag,false);
}
捕获(例外情况除外)
{
var ff=信道;
CreateConnection();
channel.BasicNack(ea.DeliveryTag,false,true);
}
};
channel.BasicConsume(队列:queue,
自动确认:错误,
消费者:消费者),;
}
返回Task.FromResult(消息);
}
捕获(例外)
{
返回null;
投掷;
}
}
这是我的消费者类,我将队列中的所有项目存储在一个列表中,并在最后返回我的BLL,我这样做对吗