Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure服务总线的基本业务流程?_Azure_Azureservicebus - Fatal编程技术网

Azure服务总线的基本业务流程?

Azure服务总线的基本业务流程?,azure,azureservicebus,Azure,Azureservicebus,我想了解Azure服务总线对以下场景的支持程度: 工作服务器将事件通知未知数量的Web服务器 每个web服务器都会处理消息(处理时间为10-30分钟) 当每个web服务器处理完第一条消息后,所有web服务器都需要接收一个新事件。基本上,在对每个web角色执行长时间运行的作业之后,我尝试同步多个web角色 我可以从Azure service bus“免费”获得多少信息?Azure service bus有很多丰富的消息传递功能,可以帮助您解决发布/订阅方面的需求以及请求/响应相关性。会话(分组/相

我想了解Azure服务总线对以下场景的支持程度:

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


我可以从Azure service bus“免费”获得多少信息?

Azure service bus有很多丰富的消息传递功能,可以帮助您解决发布/订阅方面的需求以及请求/响应相关性。会话(分组/相关)消息的概念以及会话状态在这里非常有用。以下是一些可能有帮助的特定链接: MSDN关于会话的文章:

使用会话的示例:

请求/响应示例:


讨论相关性等:

根据我对您问题的理解,在您确定所有未知数量的服务器都已处理其消息之前,我觉得复杂的部分不会发送第二条消息

虽然服务总线将提供发布/订阅和关联功能,这在这里可以帮助您,但在我看来,您描述了一种模式,在这种模式下,服务器将注册他们的兴趣,并确认他们已经处理了他们的消息,这样就可以计算确认,并且一旦每个人都收到确认,就会发送第二条消息

服务总线无法帮助您完成此编排。这样,您就可以在辅助角色中构建某些内容,或者在VM角色中可用BizTalk时使用BizTalk


类似于长时间运行的BizTalk编排来处理注册、确认跟踪以及将新消息与发布订阅的service bus主题相结合发布到web服务器可能是实现这一点的一种方法。您可能还想看看最近发布的service bus持久任务框架预览。有关如何使用此框架的一些示例,请参阅

基本上,在会话等服务总线功能之上使用此框架,您可以编写一些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);
            ...
。。。
//第一阶段
List taskList=新列表();
foreach(serverList中的var serverName)
{
taskList.Add(context.ScheduleTask(typeof(ExecutePhase1OnWebServerActivity),serverName));
}
//等待所有执行完成
等待任务。WhenAll(任务列表);
//第二阶段
taskList=新列表();
foreach(serverList中的var serverName)
{
taskList.Add(context.ScheduleTask(typeof(ExecutePhase2OnWebServerActivity),serverName));
}
等待任务。WhenAll(任务列表);
...

代码> 这看起来像工作流基础和服务总线的组合。 主题听起来很合宜,你觉得有什么主题不适合这里吗?我不是ServiceBus方面的专家,但我想知道它有多大帮助。主题听起来像是开始的地方。但是它是否有助于同步,或者我是否需要让我的工作者角色参与进来?主题允许您实现发布/订阅,这样一个进程可以通知许多其他进程(零个或多个)。反过来,它们可以通知它们已处理该事件的所有其他进程(尽管这会变得有点健谈,因为您可能会通知一个进程),在这里,回复可能会派上用场。当一个进程处理完事件后,它可以向发布该事件的进程发送消息(发送到非主题队列)。