如何向所有工作者角色实例发送消息?

时间:2013-03-03 14:59:23

标签: azure azure-storage-queues

我使用AzureQueue在角色之间进行通信。我的消息如“GoToMaintenanceMode”,“StopSendingEmails”,“DoNotAcceptRequests”等。但我意识到,当我有多个实例时,由于队列消息,它将无法用于我的场景,一次只显示1个实例。

所以我的问题是旁边的选项是否有一种优雅的方式来处理像Role.AllInstances.Run()等问题?

我正在使用的方法: 实例查看消息,将其自己的实例ID添加到消息中并将其放回队列,如果消息包含它自己的实例ID,则不会查看消息。

P.S。我不想实现TCP侦听器,如果有的话请求本机解决方案。

2 个答案:

答案 0 :(得分:10)

您可以使用Windows Azure Service Bus主题/订阅而不是队列。它们支持多播(即多个接收器)。

可在此处找到简短的操作指南

http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-topics/

基本上,您的队列将成为主题,您的所有实例都将成为主题的订阅者。

答案 1 :(得分:0)

因为您不想要TCP侦听器选项或服务总线选项。如何使用多个队列扩展您的相同想法。 Instance1将从Queue1读取,Instance2将从Queue2读取,依此类推。您需要处理的唯一事情是队列数量和同时向所有队列添加队列消息。