Rebus - 延迟消息,恰好是一个消息处理程序

时间:2014-11-14 17:34:23

标签: rebus

我想知道Rebus服务总线是否可以处理以下用例:

  • 将来的队列消息
  • 如果有一条消息ProcessInvoice,其上下文如Customer Id:1000,我们是否可以只有一个处理程序执行该消息。因此,如果邮件重复,则不会再次处理。

由于

1 个答案:

答案 0 :(得分:1)

当然 - Rebus可以bus.DeferTimeSpan发送一些var delay = utcTimeOfWhenToDeliverTheMessage - DateTime.UtcNow; bus.Defer(delay, messageToPostpone); 未来的消息 - 例如推迟将消息传递到某个特定日期,类似这样的事情可以做到:

Configure.With(...)
    .(...)
    .Timeouts(t => t.(...))

需要配置超时管理器。您可以通过

配置超时管理器
{{1}}
在Rebus配置法术中

如果您想保证给定的消息只处理一次,即使可能会发送重复消息,还有几件事需要考虑 - 很难告诉您处理它的最简单方法,因为有时它很容易只需执行已执行的操作idempotent,其他时候您需要跟踪已处理邮件的ID等。