如何向NServiceBus通用主机添加服务依赖项

时间:2011-10-26 08:33:37

标签: c# .net windows-services msmq nservicebus

我有以下服务布局:

  • 接口服务(从WCF请求,TCP请求,轮询等生成命令)
  • 工作服务(使用接口服务生成的命令并发布事件)
  • 事件处理程序服务(处理由工作服务生成的事件)

我正在使用MSMQ订阅存储。

我目前的问题是, 工作服务启动后,我必须启动事件处理程序服务 。如果我反向执行,或重新启动工作服务 事件处理程序服务将不会收到。

我的第一个想法是在事件处理程序服务上添加服务依赖项。

如何使用NServiceBus提供的通用主机执行此操作?有没有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:1)

如果您使用MSMQ作为订阅存储,则将订阅队列设为事务性。

然后,即使重新启动,来自事件处理程序服务的订阅消息仍将保留在工作服务订阅队列中。

关于启动顺序,事件处理程序服务将订阅放入工作服务的输入队列,无论是否启动了工作服务。所以启动顺序也不重要。

<强>更新

实际上这是完全不真实的,因为使队列事务处理将使您在服务器重新启动时具有持久性。

您应该仍然获得与上面描述的非事务性队列相同的行为。

答案 1 :(得分:0)

我建议使用DB订阅选项。这将保留您的订阅。