C# 停止从SubscriptionClient接收消息
如何停止从设置为事件驱动消息泵的订阅客户端接收消息?我目前有一些代码可以工作,但是当我连续运行两个测试时,它们会出现二次中断。我敢肯定,在我创建的第一个实例中,仍在从订阅中提取消息C# 停止从SubscriptionClient接收消息,c#,azure,azureservicebus,C#,Azure,Azureservicebus,如何停止从设置为事件驱动消息泵的订阅客户端接收消息?我目前有一些代码可以工作,但是当我连续运行两个测试时,它们会出现二次中断。我敢肯定,在我创建的第一个实例中,仍在从订阅中提取消息 您可以调用SubscriptionClient.Close()停止进一步处理消息 代码中的注释中也指出: 在客户端上调用Close()将停止泵 我看了看,看到了完全相同的行为。即使关闭订阅客户端,消息泵也不会停止处理消息的尝试。如果您的消息处理程序试图对消息执行.Complete或放弃,它将抛出异常,因为客户端已关
您可以调用
SubscriptionClient.Close()
停止进一步处理消息
代码中的注释中也指出:
在客户端上调用Close()将停止泵
我看了看,看到了完全相同的行为。即使关闭订阅客户端,消息泵也不会停止处理消息的尝试。如果您的消息处理程序试图对消息执行
.Complete
或放弃
,它将抛出异常,因为客户端已关闭。需要一种方法来阻止泵工。你需要做两件事
首先,调用subscriptionClient.Close(),这将最终(但不是立即)停止消息泵
其次,在收到的消息回调中,检查客户端是否已关闭,如下所示:
if (subscriptionClient.IsClosed)
return;
-1这不起作用。最后一条消息仍然通过OnMessage回调传递,并且在接收方方法尝试完成它时抛出异常。您是否测试了接受的答案?
if (subscriptionClient.IsClosed)
return;