我们目前有一个 Singleton Saga(在此处实现:https ://lostechies.com/jimmybogard/2015/04/17/saga-implementation-patterns-singleton/ )在特定超时后重新发送消息。
这很好用,因为相应的处理程序可以捕获消息并做它的东西。不幸的是,例如在安装日,捕捉 Messagesis 的 Handler 停止了,但 Saga 以其幸福的无知继续产生消息。根据 Handler 不在的时间,队列中充满了消息。由于此消息仅触发满载,因此每次在总线上几乎只有一条消息就足够了。我在这里有几种可能性:
- 最简单的方法是访问队列(以某种方式)并检查消息是否存在。但从我所见,这不可能开箱即用
- 我设置了一个 [TimeToBeReceived]-属性。这将减轻处理程序停机期间的痛苦
- 我在 Saga 中引入了一个 State。处理程序必须在总线上自己放置一条消息,然后由 Saga 处理。这似乎是类似“Saga”的方法,但它依赖于 Handler
最简单的解决方案是有可能将消息标记为单例,但我没有找到任何提示,如何做到这一点。第二种最简单的方法,检查队列,对于给定的接口似乎也不是那么容易。
是否有任何遗漏的可能性,或者是否有一种方法更适合 NServiceBus 背后的心态?