NServiceBus分发服务器:防止在客户端重新启动后在StorageQueue中出现额外条目

NServiceBus分发服务器:防止在客户端重新启动后在StorageQueue中出现额外条目,nservicebus,nservicebus-distributor,Nservicebus,Nservicebus Distributor,为简单起见,我将引用分发服务器的ControlInputQueue和它的StorageQueue。我了解分发服务器的客户端如何通过向ControlInputQueue写入条目来通知其可用性,以及分发服务器如何将条目移动到其StorageQueue以跟踪哪些客户端可用于工作。如果我对他们一视同仁,解释起来就容易多了。所以 我创建了一个概念证明来演示NServiceBus分发服务器的行为。正如预期的那样,当客户机启动时,它会向分发服务器的StorageQueue添加一个条目。当消息进入分发服务器时(

为简单起见,我将引用分发服务器的ControlInputQueue和它的StorageQueue。我了解分发服务器的客户端如何通过向ControlInputQueue写入条目来通知其可用性,以及分发服务器如何将条目移动到其StorageQueue以跟踪哪些客户端可用于工作。如果我对他们一视同仁,解释起来就容易多了。所以

我创建了一个概念证明来演示NServiceBus分发服务器的行为。正如预期的那样,当客户机启动时,它会向分发服务器的StorageQueue添加一个条目。当消息进入分发服务器时(通过其InputQueue),分发服务器将从其StorageQueue中删除一个条目,并将消息转发到指定的客户端。客户机执行其工作,然后将一个条目添加回分发服务器的存储队列。因此,分发服务器的StorageQueue中最多有一个条目(每个客户端)

我的问题发生在客户端手动或意外关闭时(如服务器爆炸)。客户机条目仍然存在于分发服务器的存储队列中,因此,就分发服务器所知,该客户机仍然可用。这很好,只是当客户机再次启动时,它会向StorageQueue添加另一个条目。因此,对于单个客户端,StorageQueue中有两个条目


是否有任何方法可以确保分发服务器对任何给定的客户端只有一个StorageQueue条目?

为了提供此问题的“正式”答案。。。根据上面Andreas的评论,似乎在NserviceBusV2.6中没有防止这些重复条目的方法,但在v3.0中有。因此,解决方案是升级。;-)

你用的是什么版本?我不相信分销商足够聪明,不会复制条目。如果负载平衡的循环性质变得不平衡,那么这实际上只会产生问题,在这种情况下,反弹分发服务器将起作用。3.0分发服务器将在工作人员重新启动时清除所有以前的条目,因为我使用的是v2.6。安德烈亚斯,很高兴听到你这么说。你们有3.0的发布时间表吗?;-)