Azure服务总线订阅.close()未按预期工作



我有一个扩展的应用程序,其中每个实例都连接到具有相同名称的azure服务总线订阅。最终的结果是,只有一个实例可以对任何给定的消息执行操作,因为它们都在侦听同一个订阅。

有时,应用程序需要将实例置于空闲状态(服务结构ActiveSecondary副本(。发生这种情况时,我需要关闭订阅,以便此实例不再接收消息。如果最初有两个实例,那么一旦其中一个实例进入空闲状态,所有消息都应该转到其余实例。这一点非常重要,以便所有消息都由正确配置的主实例处理。

当实例变为空闲时,取消令牌将被取消。我有代码在侦听取消,并在最初创建订阅时生成的SubscriptionClient上调用Close((。

问题是,即使在我对一个实例调用Close((之后,消息仍然在它和主实例之间随机分配。

我这样做的方式本身就是错误的,还是我的代码中的其他东西导致了这种行为?

Azure服务总线跟踪0和1 SDK不支持CancellationTokens。如果你关闭了你的客户端,消息将不会被处理,当它们再次可见时,它们将被另一个竞争实例接收。这就是MaxLockDurationMaxDeliveryCount的重要性,以确保消息有足够的处理尝试来说明您所描述的情况,而不需要等待太长时间。

忽略此帖子。事实证明,我在一个实例中使用了两次相同的订阅名称,所以他们在争夺活动。close((函数按预期工作。

最新更新