繁体   English   中英

Azure 服务总线订阅。关闭()未按预期工作

[英]Azure Service Bus subscription.close() not working as intended

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

有时,应用程序需要将实例放入空闲的 state(服务结构 ActiveSecondary 副本)中。 发生这种情况时,我需要关闭订阅,以便该实例不再接收消息。 如果最初有 2 个实例,则一旦将一个放入空闲 state 中,所有消息都应 go 发送到其余实例。 这很重要,因此所有消息都由正确配置的主实例处理。

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

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

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

Azure 服务总线轨道 0 和 1 SDK 不支持 CancellationToken。 如果您正在关闭您的客户端并且消息不会被处理,那么当它们再次可见时,它们将被另一个竞争实例拾取。 这就是MaxLockDurationMaxDeliveryCount很重要的地方,以确保消息有足够的处理尝试来说明您所描述的情况而无需等待太久。

无视这个帖子。 结果我在一个实例中使用了两次相同的订阅名称,所以他们在竞争这些事件。 close() function 按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM