3

我想了解 Azure 服务总线支持多少以下场景:

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

我可以从 Azure 服务总线“免费”获得多少?

4

4 回答 4

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

于 2013-03-08T18:32:47.923 回答
2

您可能还想在此处查看最近发布的 Service Bus Durable Task Framework 预览。有关如何使用此框架的一些示例,请参见此处

基本上,在会话等服务总线功能之上使用此框架,您可以编写一些 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);
            ...
于 2013-07-02T08:02:24.247 回答
1

根据我对您问题的解释,在我看来,在您确定所有未知数量的服务器都处理了他们的消息之前,复杂的部分不会发送第二条消息。

虽然服务总线将提供 pub/sub 和相关功能,可以在这里为您提供帮助,但对我来说,您描述了一种模式,服务器会注册他们的兴趣并承认他们已经处理了他们的消息,所以一些东西会计算 ack,一旦每个人都有确认将发送第二条消息。

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

像一个长时间运行的 BizTalk 编排来处理注册、跟踪确认和发布新消息以及用于 pub sub 到 Web 服务器的服务总线主题可能是一种方法

于 2013-03-24T00:08:47.910 回答
0

在我看来,这就像 Workflow Foundation 和 Service Bus 的组合。

于 2014-02-03T12:28:20.010 回答