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。不如在侦听器仍处于活动状态时更新并发性那么优雅,但它对我们有用。
我和另一个用户有类似的问题,但从未得到回答:
我正在使用 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。不如在侦听器仍处于活动状态时更新并发性那么优雅,但它对我们有用。