我想写一个NServiceBus的工作单元,它将在每个消息处理程序之前和之后调用,以测量该处理程序运行并将其写入数据库所需的时间。NServiceBus工作单元 - 获取调用哪个处理程序?
我能够成功编写工作单元,但在Begin()方法实现中,我怎样才能知道哪个处理程序被调用?
我想写一个NServiceBus的工作单元,它将在每个消息处理程序之前和之后调用,以测量该处理程序运行并将其写入数据库所需的时间。NServiceBus工作单元 - 获取调用哪个处理程序?
我能够成功编写工作单元,但在Begin()方法实现中,我怎样才能知道哪个处理程序被调用?
您可以使用ServiceInsight来获取此类信息。有关更多信息,请参阅docs on ServiceControl和ServiceInsight。另一个频道可能是NServiceBus.Performance Counters。
这将提供整个消息的信息(如果有多个处理该消息的处理程序,将会是所有消息的总和,再加上基础结构时间)。 – 2014-10-20 09:30:09
我会看看装饰图案,并处理这个由依赖注入
例如 https://code.google.com/p/autofac/wiki/AdaptersAndDecorators
您可以创建为IHandleMessages界面的装饰和配置所有消息处理程序返回的代理到真正的消息处理程序,它添加了所需的工具逻辑。
你的工作单位通常应该独立于处理程序。你为什么需要这些信息?此外,多个处理程序可能需要一条消息,那么你会怎么做呢? – 2014-10-19 22:45:47
我想要做的是查看哪个处理程序正在调用消息并测量处理它的时间量。我想在开始时设置秒表,并在结束时停止它,如果经过时间大于X,则将日志记录到我的记录器。这可能吗? – developer82 2014-10-20 05:30:35
我不确定这是个好主意。在尝试测试代码时,您会放慢处理消息的速度。此外,为什么您需要处理程序级别的仪器而不是消息级别的性能测量? – 2014-10-20 09:31:57