2.手动确认消费
channel.BasicConsume(queue: "",
autoAck: true,//自动消息确认 ,如果设置为false,会导致消息重复消费
consumer: consumer
);
———————————————————— 手动确认机制
//1. 创建工厂
var factory = new ConnectionFactory()
{
HostName = "127.0.0.1",
Port = 5672,
UserName = "guest",
Password = "guest",
VirtualHost = "/"
};
//创建连接
var connection = factory.CreateConnection();
//创建通道
var channel = connection.CreateModel();
//定义队列
channel.QueueDeclare(queue: "create-PlanInfo",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null
);
//创建 事件基本消费者
var consumer = new EventingBasicConsumer(channel);
//接收到消息事件
consumer.Received += (model, ea) =>
{
var message = Encoding.UTF8.GetString(ea.Body.ToArray());
Console.WriteLine($"客户消费者 预定: {message}");
{
//.....业务逻辑代码
}
//自动确认的机制缺陷
channel.BasicAck(ea.DeliveryTag, true);
};
channel.BasicConsume(queue: "",
autoAck: false,//自动消息确认 ,如果设置为false,会导致消息重复消费 ,那么就需要手动确认
consumer: consumer
);

浙公网安备 33010602011771号