gpt4 book ai didi

c# - 取消 Azure 服务总线 QueueClient 长时间运行的接收吗?

转载 作者:行者123 更新时间:2023-11-30 20:57:13 25 4
gpt4 key购买 nike

我正在编写一个测试程序来处理 Azure 服务总线队列中的消息。我希望能够提供启动和停止出队功能的能力。

如果我想知道是否有办法取消对 QueueClient.Receive(TimeSpan) 的调用?有一个 QueueClient.Abort() 方法,还有一个 QueueClient.Close() 方法,但有关这些的文档很少。并且,中止或关闭后似乎没有相应的“打开”方法。

如果无法取消长时间运行的接收,那么我将陷入使用短(或无)TimeSpan 的困境,以便让用户有机会停止出队。通过这样做,我几乎是在对自己进行轮询,这削弱了长时间运行接收功能的优势。

我刚开始使用服务总线队列,所以也许我的方法走错了路,并且不理解队列中的消息应该如何处理的精神?

最佳答案

关闭创建队列客户端的消息工厂,接收方将中止。关闭消息传递工厂会删除与 Service Bus 服务的连接。请注意,从工厂创建的其他 MessagingEntities 也已关闭,因此请使用专用工厂进行接收循环。

var myFactory = MessagingFactory.FromConnectionString(...);
myFactory.Close();

根据我的经验,QueueClient 上的 Abort 方法有时不会在合理的时间段内中止实际的接收操作。

要再次开始接收,您需要从新的 MessagingFactory 创建新的 QueueClient。

关于c# - 取消 Azure 服务总线 QueueClient 长时间运行的接收吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16994772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com