将NServiceBus与NHibernate saga persister一起使用,如果可以多次接收消息,我怎样才能避免重复传闻?
以下是我到目前为止所考虑的一些解决方案:
永远不要调用MarkAsComplete(),以便重复数据删除由saga本身以通常的方式处理。
实现我自己的saga persister,它存储已完成的传奇的相关ID,因此忽略重复/附加消息。
答案 0 :(得分:2)
问题是什么会导致多次接收消息 - 是否是由于重试相同的消息(例如在DB中存在死锁的情况)?这些类型的重试(导致相同的消息被多次“处理”)已经由NServiceBus的事务性质处理。
如果情况是由多个其他端点多次发送的消息引起的,那么建议您看看在发送方可以采取哪些措施来防止这种情况发生。如果那是不可能的,那么是的,一个永远不会完成的传奇可以作为你的过滤器。