2013-03-08 129 views
3

我想了解有多少以下情形的由Azure的服务总线支持:Azure服务总线的基本协调?

工人服务器通知数目不详的事件 的Web服务器中的每个网络服务器处理的消息(处理需要一段时间 - 10 -30分钟) 当每个Web服务器都处理完第一条消息后,所有Web服务器都需要接收新事件。基本上,我试图在对每个Web角色执行长时间运行的作业之后同步许多Web角色。

从Azure服务总线“免费”获得多少钱?

+1

主题听起来像它符合法案,有没有关于你认为不适合在这里的话题? – 2013-03-08 02:53:54

+0

我不是ServiceBus的专家,但试图找出它可以提供多少帮助。主题听起来像是开始的地方。但它可以帮助同步还是需要让我的工作人员角色参与? – Igorek 2013-03-08 02:56:44

+1

使用主题可以实现pub/sub,因此一个进程可以通知许多其他进程(零个或多个进程)。他们可以反过来通知所有其他流程,他们已经处理了该事件(尽管由于您可能会通知一个流程,这听起来有点琐碎),但回复可能会在这里派上用场。当1个进程完成事件处理后,它可以向发布事件的进程发送消息(发送到非主题队列)。 – 2013-03-08 03:08:50

回答

1
讲座

根据我如何解释你的问题,它听起来像复杂的位不会发送第二条消息,直到你确信所有未知数量的服务器已经处理他们的消息。

虽然服务总线会提供pub/sub和相关功能,可以帮助您在这里,对我而言,您描述了服务器注册其感兴趣的模式,并且确认他们已经处理了他们的消息,一旦所有人都知道了,第二条消息就会发送出去。

这种编排并不是服务总线可以帮助您的。这使您可以在工作角色中构建某些东西,或者在可用于VM角色时使用BizTalk。

就像一个长期运行的BizTalk业务流程办理登记,确认的跟踪和公布新的消息与酒吧子到Web服务器服务总线话题相结合可能是一个办法做到这一点

3

Azure服务总线有很多丰富的消息传递功能,可以帮助满足您的需求的Pub/Sub方面以及请求/响应关联。会话(分组/相关)消息的概念以及会话状态在这里可能非常有用。以下是可能帮助一些具体环节:在会议 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

2

您可能也想看看最近发布的Service Bus耐用任务框架预览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); 
      ... 
0

这看起来对我来说,工作流基础的组合和服务总线。