使用发布者确认时,是否可以恢复裸报?我一直在查看Channel_BasicNacks的事件参数,但没有找到与之对应的对象或属性。
即:
_factory = new ConnectionFactory
{
HostName = Settings.HostName, UserName = Settings.UserName, Password = Settings.Password,
AutomaticRecoveryEnabled = true
};
_connection = _factory.CreateConnection();
Channel = _connection.CreateModel();
Channel.BasicAcks += Channel_BasicAcks;
Channel.BasicNacks += Channel_BasicNacks;
Channel.ConfirmSelect();
Channel.QueueDeclare(Settings.QueueName, true, false, false, null);
}
private void Channel_BasicNacks(object sender, RabbitMQ.Client.Events.BasicNackEventArgs e)
{
IModel model = (IModel)sender;
throw new NotImplementedException();
}
您可以尝试再次重新发送basic.nack
'ed 消息,直到它被 basic.ack
确认。
来自确认(又称发布者确认)(否定确认部分):
仅当负责队列的 Erlang 进程中发生内部错误时,才会传递
basic.nack
。
basic.nack
不是一种常见的服务器方法(我从未见过它),但应该可以通过 rabbitmqctl eval 通过破坏一些内部结构来触发它。