【问题标题】:Dequeue item only if task is completed仅在任务完成时出列项目
【发布时间】:2017-07-23 21:25:41
【问题描述】:

我正在使用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 的返回值为 true 时,我才能出队?

【问题讨论】:

    标签: c# .net rabbitmq easynetq


    【解决方案1】:

    一旦消费者处理程序方法/订阅处理程序完成,EasyNetQ 就会确认消息。如果处理程序抛出异常(如果您让错误冒泡),EasyNetQ 的默认错误处理过程将处理它。消息和异常将被包装在错误消息中并放置在错误队列中,然后向代理发送 ACK。

    您可以在修复错误情况后重播该消息。

    更多信息可以在这里找到:https://github.com/EasyNetQ/EasyNetQ/wiki/Error-Conditions(页面底部)

    【讨论】:

      猜你喜欢
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多