2014-12-04 61 views
1

每10分钟Azure中的多个工作角色设置为处理一组作业(100+)。有些工作是独立的,但其他工作则不是。对于(简单的)例子,作业B必须在发送作业B之前处理,发送和确认。工作角色中的作业之间的Azure依赖关系

可以将独立作业放在队列中分发给工作人员角色。我想知道排队是否可以用于依赖性工作,以便制定一致的解决方案。

编辑:我用了一个太简单的例子。作业A和B都包含几个相关的消息。这些消息将被分配给n个工作角色并将被单独发送,所以当n个工作角色获得acks时,作业A完成,然后发送作业B的消息(分发给m个工作角色并由其处理)。 我认为在这种情况下唯一的选择是让一个工作人员角色处理工作A和B,否则需要一个复杂的工作间角色同步机制。

+0

只有当你的一个工人角色确认完成作业A时,才会发送作业B. – Abhijeet 2014-12-04 08:40:54

+0

那么为什么你会关心谁来处理作业B. – Abhijeet 2014-12-04 08:41:27

回答

1

我认为你可以使用队列来促进这一点。一种可能的解决方案是在工作A完成后让工作人员在同一队列或其他队列中写入另一条消息。因此,工作人员将为作业A提取消息,处理作业,写入另一条消息,即作业A完成并删除原始消息。现在另一个线程将接收消息并开始处理作业B.如果消息发布在同一个队列中,则消息需要传达它是多作业链的一部分,并且已完成哪些步骤。如果消息被发布在另一个队列中(例如作业B的特定队列),那么你的代码就会知道这个消息是针对作业B的,并且应该相应地处理它。