Webjob在执行之前是否可以使用相关的消息?
问题描述:
Webjob是否有可能在每个新消息之后用一小段延迟来侦听队列并消耗所有相关消息(基于消息ID或会话ID或其他内容)?Webjob在执行之前是否可以使用相关的消息?
例如,三个用户编辑和更新三个时间表。两个是同一个员工。每个计划生成一个PayrollUpdated事件:1)员工100,第1周,2017年,2)员工200,第1周,2017年,3)员工100,第1周,2017年。
我想webjob收听队列并执行两个并发的webjobs,每个员工,每周,每年的标识符。
我不知道批次或会话是否可以完成此操作。我也无法将我的头围绕NServiceBus来知道这是否是一个选项。
注意:webjob任务是幂等的。
答
Webjob是否有可能在每个新消息之后用一小段时间来侦听队列并使用所有相关消息(基于消息ID或会话ID或其他内容)?
开箱即用。要消耗所有相关消息,您需要使用Message Sessions,这是ServiceBus
触发器不支持的。有一个issue正是这个问题(也因为他们依靠WebJobs SDK issue for Azure Functions)。或者,你可能会考虑创建将使用消息会话的自定义WebJob extension。
我也无法将我的头围绕NServiceBus来知道这是否是一个选项。
使用NServiceBus你可以使用Sagas来实现它。
萨加斯是处理由某种业务标识符关联的多个消息的好选择。 –