如何获取nservicebus的工作线程列表。我需要将workerThread id注册到db,然后将某些类型的消息绑定到确切的workerthread。真正的想法是处理毒药消息。想要阻止所有线程不处理除指定消息之外的有害消息。将有一个单独的服务,将通过数据库管理线程。
答案 0 :(得分:1)
我不会尝试这样做。几乎肯定会遇到问题。
当然,为了获得每个线程的某种“身份”,你可以在你的消息处理程序中放置这样的东西:
[ThreadStatic]
private static readonly Guid ThreadId = Guid.NewGuid();
但是,我不会这样做!每次重新启动端点时,guid都会改变。
您还可以直接从.NET查询线程列表,并尝试确定哪些是消息处理线程,但这听起来很可怕,我甚至不想进入它。
真正的问题:毒药消息处理
正如你的评论所述,真正的问题是毒药信息真的是毒药。它不仅失败了,而且它需要很长时间才能完全搞砸所有其他线程!
由于您能够根据消息的某些属性识别这些消息,因此我会在超时的操作之前检测并抛出异常。一直以来。
如果您希望能够定期测试以查看问题是否已修复,您可以选择以下几种方法: