我有一个Endpoint
与Handle
方法。我想在Handle
之前立即做一些事情。通过饮用LogCommandEntryBehavior : Behavior<IIncomingLogicalMessageContext>
,我能够完成这一步骤。需要在Handle
之后立即执行哪些内容?如何在NServiceBus 6中的“Handle”方法之后注册一个要执行的行为?
0
A
回答
7
在NServiceBus版本6中,流水线由一系列阶段组成,每个阶段嵌套在前一个阶段,如一组Russian Dolls。对于传入的消息,该阶段是(按顺序):
ITransportReceiveContext
,IIncomingPhysicalMessageContext
,IIncomingLogicalMessageContext
,和IInvokeHandlerContext
当一个阶段中创建的行为,你会通过一个名为next()
的代表。当您致电next()
时,您将执行管道中的下一个行为(这可能会将管道移至下一个阶段)。对next()
的调用返回一个Task
,它指示管道的内部部分何时完成。
这让你有机会在移动到下一个阶段之前调用你的代码,并调用更多的代码下一个阶段已经完成这样的后:
public class LogCommandEntryBehavior : Behavior<IIncomingLogicalMessageContext>
{
public override async Task Invoke(IIncomingLogicalMessageContext context, Func<Task> next)
{
// custom logic before calling the next step in the pipeline.
await next().ConfigureAwait(false);
// custom logic after all inner steps in the pipeline completed.
}
}
如果你想记录有关信息处理消息,我建议看看IInvokeHandlerContext
阶段。它包含有关消息如何处理的信息,并且将为每个调用的处理程序调用一次(如果有多个)。如果你不需要那个级别的信息,那么IIncomingLogicalMessageContext
可能就是你所需要的。
你可以阅读更多有关在特定文档网站上的第6版管道:
相关问题
- 1. 如何在执行一些其他有重载的方法之前/之后每次执行一个方法?
- 2. Facebook执行,注册后
- 3. 如何测量NServiceBus中“Handle”方法的调用时间?
- 4. 如何将方法保存在稍后要执行的类中
- 5. 需要安排一个方法在asp.net中的执行方式
- 6. 如何仅在执行第一种方法后执行第二种方法
- 7. 注册表值在执行Wix次要升级后消除
- 8. 无法在C#中的DownloadFileAsync之后执行下一个代码?
- 9. 在C#中返回一个值之前执行的方法
- 10. 在Drools中执行一个成功的规则后退出6
- 11. FlightPHP注册一个类之后找不到方法
- 12. 执行一个方法取决于在android中执行另一个方法
- 13. 如何在反序列化之后自动执行一个方法?
- 14. 如何注册一个接口并使用QtDbus注册方法?
- 15. 如何在ASP.NET MVC的RegisterGlobalFilters方法中执行依赖注入
- 16. Angularjs $注入器:在缩小后的运行方法中取消注册
- 17. 如何执行一个方法在运行时执行一次c#
- 18. 如何执行一个方法BackgroundAudioPlayer fastforward?
- 19. WCF方法后的执行方法
- 20. 在Thread.join()执行后执行相同方法中的代码
- 21. @parameters方法在@beforeclass方法执行之前执行
- 22. JDK 6:有没有办法运行一个新的java进程,执行指定类的主要方法
- 23. 如何在JavaScript中强制执行下一行之前的行?
- 24. 如何用gradle创建的fatJar中的主要方法执行一个类
- 25. 哪个线程执行注册动作
- 26. 注册会话执行
- 27. 如何在ASP.net中一次执行一个方法
- 28. 如何在一个方法中执行多个测试?
- 29. NServiceBus 6(6.0.0-beta0004) - 所请求的服务 'NServiceBus.RecoverabilityExecutorFactory' 尚未注册
- 30. 如何使每个类方法在执行之前调用指定的方法?
谢谢麦克,这是我来到了确切的结论。我应该增加答案。出于某种原因,我的大脑没有建立“Behavior'中的'next()'方法执行的连接。一旦我意识到这一切都在一起。 –