Azure Service Bus 的基本编排?

3
我想了解Azure服务总线支持以下情况的程度:
工作服务器通知未知数量的Web服务器事件 每个Web服务器都会处理消息(处理需要一段时间-10-30分钟) 当每个Web服务器完成第一条消息的处理后,所有Web服务器都需要接收一个新事件。基本上,在每个Web角色上执行长时间运行的作业后,我正在尝试同步多个Web角色。
Azure服务总线可以“免费”提供多少此类功能?

1
主题似乎符合要求,您认为有关主题的某些内容不适合在这里吗? - Peter Ritchie
我不是ServiceBus的专家,但正在尝试找出它能提供多少帮助。主题听起来像是开始的地方。但是它能帮助同步吗?还是需要让我的工作角色参与进来? - Igorek
1
主题可以让你实现发布/订阅,所以一个进程可以通知许多其他进程(零个或多个)。 它们反过来可以通知所有其他处理事件的进程(虽然这会有点啰嗦,因为你可能正在通知一个进程),在这里回复可能很方便。当1个进程完成事件处理时,它可以向发布事件的进程发送消息(发送到非主题队列)。 - Peter Ritchie
4个回答

3
Azure Service Bus拥有丰富的消息功能,可以帮助处理您需求中的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 Durable Task Framework预览,可以在此处查看。有关如何使用此框架的示例,请参见此处
基本上,在使用此框架的情况下,您可以编写一些C#协作代码,该代码大致执行以下操作,利用了Service Bus的会话等功能:
            ...
            // 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);
            ...

1
根据我理解您的问题,对我来说似乎最复杂的部分是在确认所有未知数量的服务器都已处理其消息之前不发送第二条消息。
虽然服务总线提供了pub/sub和关联特性,这可以帮助您,但对我来说,您正在描述一种模式,其中服务器将注册其兴趣并确认它们已处理其消息,因此某些内容会计算ACK,一旦所有人都ACK,则会发送第二条消息。
这种编排不是服务总线可以帮助您处理的。这使您需要在 Worker 角色中构建某些东西,或在 VM 角色中使用 BizTalk(如果可用)。
像长时间运行的 BizTalk 编排一样,处理注册,跟踪确认并发布新消息,结合服务总线主题进行发布订阅到 Web 服务器可能是一种方法来实现这一点。

0

在我看来,这似乎是工作流基础和服务总线的组合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接