在azure QueueClient上调用close()会正常停止消息泵吗?

时间:2017-09-05 10:24:23

标签: c# azure azureservicebus

使用队列客户端创建辅助角色时的模板代码提供了消息泵实现。代码中有一条评论说:

// Initiates the message pump and callback is invoked for each message that is received, calling close on the client will stop the pump.
sourceClient.OnMessage(received =>
{
    //blah blah implementation
});

在sourceClient上调用close()时会发生什么?当前正在处理的邮件是否继续?即这是消息泵的优雅关闭吗?或者调用close会影响消息泵当前正在处理的消息吗?

文档会让我相信它,但是有一个出色的反馈项,这意味着消息泵没有优雅的关闭机制:https://feedback.azure.com/forums/216926-service-bus/suggestions/4345733-provide-gracefull-shutdown-feature-to-message-pump

那么souceClient.close()实际上做了什么?

1 个答案:

答案 0 :(得分:1)

在完整框架中,客户端(WindowsAzure.ServiceBus)QueueClient不能正常停止消息泵。飞行中未完成的消息将增加其递送计数。

  

那么souceClient.close()实际上做了什么?

该客户是一个封闭的源项目。最好的猜测是为它提出一个问题here