NServiceBus 消息处理程序未按预期顺序触发 Saga 处理程序提前触发

标签 nservicebus

我们正在使用我们自己的主机并希望指定一个处理程序首先触发。我们有一个消息验证处理程序,我们希望在 Saga 处理程序之前触发它。我们尝试使用下面的代码设置顺序,但在我们的日志中查看我们的 saga 消息处理程序首先触发,然后验证处理程序触发。被难住了,想知道这个传奇是否与它有关?
如果您有任何想法,请告诉我们。

来自这里的文档:http://docs.particular.net/nservicebus/handlers/handler-ordering

NServiceBus.Configure.With()
 ...
 .UnicastBus()
      .LoadMessageHandlers<First<YourHandler>>()

我们的代码如下所示:
var bus =  Configure.With()
    ...
    .UnicastBus()
          .LoadMessageHandlers(new First<ValidationHandler>())

最佳答案

将您的代码更改为 NServiceBus 常见问题解答中的示例。我有同样的问题,我也在做

.UnicastBus()
      .LoadMessageHandlers(new First<ValidationHandler>())

当我切换到
.UnicastBus()
      .LoadMessageHandlers<First<YourHandler>>()

它以预期的顺序运行处理程序

关于NServiceBus 消息处理程序未按预期顺序触发 Saga 处理程序提前触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5553219/

相关文章:

msmq - 事务性死信队列已满

.net - 如何在 nservicebus MSMQ 中达到最大重试次数时发送电子邮件

api - NServiceBus Sagas 和 REST API 集成最佳实践

nservicebus - NServiceBus 3.3.5“无法加载文件或程序集”在子文件夹中

docker - 无法从容器中的应用连接到远程SQL Server实例

c# - 如何检查一个类的所有公共(public)方法都是虚拟的

c# - Saga 等待状态值

c# - 如何抛出异常以强制消息进入 NServiceBus 中的错误队列

azure - Azure 中的 NServiceBus 错误队列

c# - 如何以编程方式将映射添加到 UnicastBusConfig?