我想了解Azure Service Bus支持以下多少场景:
工作服务器通知未知数量的Web服务器事件 每个Web服务器处理该消息(处理需要一些时间 - 10-30分钟) 当每个Web服务器完成第一条消息的处理后,所有Web服务器都需要接收新事件。基本上我在为每个Web角色执行长时间运行的作业后尝试同步许多Web角色。
我可以从Azure服务总线“免费”获得多少内容?
答案 0 :(得分:3)
Azure Service Bus具有许多丰富的消息传递功能,可以帮助您满足需求的发布/订阅方面以及请求/响应关联。会话(分组/相关)消息以及会话状态的概念在这里非常有用。以下是一些可能有用的特定链接: 有关会话的MSDN文章:http://msdn.microsoft.com/en-us/magazine/jj863132.aspx
使用会话的示例:http://code.msdn.microsoft.com/windowsazure/Brokered-Messaging-Session-41c43fb4
请求/回复示例:http://code.msdn.microsoft.com/windowsazure/Brokered-Messaging-Request-0ce8fcaf
谈论相关性等:http://channel9.msdn.com/Blogs/Subscribe/Service-Bus-Messaging-Deep-Dive
答案 1 :(得分:2)
您可能还想查看最近发布的Service Bus Durable Task Framework预览here。有关如何使用此框架的一些示例,请参阅here。
基本上,在诸如会话等服务总线功能之上使用此框架,您可以编写一些C#编排代码,其执行大致类似的操作:
...
// phase 1
List<Task> taskList = new List<Task>();
foreach (var serverName in serverList)
{
taskList.Add(context.ScheduleTask<object>(typeof(ExecutePhase1OnWebServerActivity), serverName));
}
// wait for all of the executions to finish
await Task.WhenAll(taskList);
// phase 2
taskList = new List<Task>();
foreach (var serverName in serverList)
{
taskList.Add(context.ScheduleTask<object>(typeof(ExecutePhase2OnWebServerActivity), serverName));
}
await Task.WhenAll(taskList);
...
答案 2 :(得分:1)
根据我如何解释你的问题,听起来很复杂,在你确定所有未知数量的服务器都处理了他们的消息之前,复杂的比特不会发送第二条消息。
虽然服务总线会提供发布/订阅和关联功能,这可以帮助你,在我看来你描述了一个模式,服务器会注册他们的兴趣,并承认他们已经处理了他们的消息,所以有些东西会计算ack和一旦每个人都知道了第二条消息就会被发送。
这个编排不是服务总线可以帮助你的东西。这使您可以在工作者角色中构建某些东西,或者在VM角色中可用时使用BizTalk。
像长期运行的BizTalk业务流程一样处理注册,跟踪确认并发布新消息以及pub子服务总线主题到Web服务器可能是一种方法
答案 3 :(得分:0)
这看起来像是Workflow Foundation和Service Bus的组合。