gpt4 book ai didi

Rebus - 延迟消息,只有一个消息处理程序

转载 作者:行者123 更新时间:2023-12-04 18:05:47 24 4
gpt4 key购买 nike

我想知道 Rebus Service Bus 是否可以处理以下用例:

  • 为将来的日期排队消息
  • 如果有一条消息 ProcessInvoice 的上下文类似于 Customer Id: 1000,我们是否可以让一个处理程序执行该消息。因此,如果消息重复,则不会再次处理。

谢谢

最佳答案

当然 - Rebus 可以将消息bus.Defer 一些 TimeSpan 到 future - 例如将消息的传递推迟到某个特定日期,可以这样做:

var delay = utcTimeOfWhenToDeliverTheMessage - DateTime.UtcNow;

bus.Defer(delay, messageToPostpone);

这需要配置超时管理器。您可以通过以下方式配置超时管理器

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

在 Rebus 配置拼写中。

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

关于Rebus - 延迟消息,只有一个消息处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com