我有以下服务布局:
我正在使用MSMQ订阅存储。
我目前的问题是, 工作服务启动后,我必须启动事件处理程序服务 。如果我反向执行,或重新启动工作服务 事件处理程序服务将不会收到。
我的第一个想法是在事件处理程序服务上添加服务依赖项。
如何使用NServiceBus提供的通用主机执行此操作?有没有更好的方法来解决这个问题?
答案 0 :(得分:1)
如果您使用MSMQ作为订阅存储,则将订阅队列设为事务性。
然后,即使重新启动,来自事件处理程序服务的订阅消息仍将保留在工作服务订阅队列中。
关于启动顺序,事件处理程序服务将订阅放入工作服务的输入队列,无论是否启动了工作服务。所以启动顺序也不重要。
<强>更新强>
实际上这是完全不真实的,因为使队列事务处理将使您在服务器重新启动时具有持久性。
您应该仍然获得与上面描述的非事务性队列相同的行为。
答案 1 :(得分:0)
我建议使用DB订阅选项。这将保留您的订阅。