我正在使用easynetq订阅队列。
var logger = new RabbitMQLogger();
string cfg = ConfigurationManager.AppSettings["rabbitConfig"];
var bus = RabbitHutch.CreateBus(cfg, x => x.Register<IEasyNetQLogger>(_ => logger));
bus.Subscribe<MyRequest>("", msg =>
{
Console.WriteLine("Processing: " + msg.Name);
// call DoTask()
// if it's true remove this item from a queue on a rabbitmq server
// if it's false do nothing
});
private bool DoTask()
{
/// .. do something
return true;
}
如果DoTask的返回值为真,我该如何出列?
答案 0 :(得分:1)
一旦消费者处理程序方法/订阅处理程序完成,EasyNetQ就会对消息进行确认。如果处理程序抛出异常(如果你让错误冒出来),EasyNetQ的默认错误处理过程将处理它。消息和异常将包装在错误消息中并放在错误队列中,然后将ACK发送给代理。
然后,您可以在修复错误条件后重播该邮件。
可以在此处找到更多信息:https://github.com/EasyNetQ/EasyNetQ/wiki/Error-Conditions(页面底部)