MaxConcurrentCalls 的动态更新

Dynamic Update of MaxConcurrentCalls

我和另一个用户有类似的问题,但从未得到回答:

我正在使用 Windows Azure 创建辅助角色并具有以下代码: OnMessageOptions 选项 = new OnMessageOptions() { MaxConcurrentCalls = 10 }; ... Client.OnMessage((收到消息) => { ... }, 选项); 是否可以在消息泵启动后更新 MaxConcurrentCalls?

我知道我可以循环我的工作者角色来更新设置,但是除了循环代码还有其他方法吗?再次调用 OnMessage 会抛出异常,没有任何设置可以在调用后更改,而且我找不到 cycle/close QueueClient 的方法。

Calling OnMessage again throws an exception, there are no settings exposed that I can change once its called, and I cannot find a way to cycle/close the QueueClient.

据我所知,OnMessage/OnMessageAsync 只能在任何接收器上调用一次,我们无法在调用 OnMessage 后立即调用 OnMessageOptions modify/reset。如果您通过同一个 QueueClient 再次调用 OnMessage,它将 return 错误消息 The method 'OnMessage' or 'OnMessageAsync' has already been called.

我发现您可以关闭 QueueClient.MessageFactory 它会停止当前侦听器以允许已经在进行中的作业完成,然后您可以使用更新的并发设置创建一个新的 QueueClient。不如在侦听器仍处于活动状态时更新并发性那么优雅,但它对我们有用。