使用发布者确认时,是否可以恢复被取消的消息
When using publisher confirms, is it possible to recover the message that was nacked
当使用publisher confirms时,是否可以恢复被nacked的消息?我一直在查看 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
的消息,直到 basic.ack
确认为止。
来自Confirms (aka Publisher Acknowledgements)(否定确认部分):
basic.nack
will only be delivered if an internal error occurs in the Erlang process responsible for a queue.
basic.nack
不是常见的服务器方法(我从未见过),但应该可以通过破坏一些内部结构通过 rabbitmqctl eval 触发它。
当使用publisher confirms时,是否可以恢复被nacked的消息?我一直在查看 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
的消息,直到 basic.ack
确认为止。
来自Confirms (aka Publisher Acknowledgements)(否定确认部分):
basic.nack
will only be delivered if an internal error occurs in the Erlang process responsible for a queue.
basic.nack
不是常见的服务器方法(我从未见过),但应该可以通过破坏一些内部结构通过 rabbitmqctl eval 触发它。