webjob可以在执行之前消耗相关的消息吗?

时间:2017-10-21 16:36:07

标签: nservicebus azure-webjobs azureservicebus

webjob是否有可能在每条新消息之后以较小的延迟收听队列并使用所有相关消息(基于消息ID或会话ID或其他内容)?

例如,三个用户编辑和更新三个计划。两个是同一个员工。每个计划为PayrollUpdated生成一个事件:1)员工100,第1周,2017年,2)员工200,第1周,2017年,3)员工100,第1周,2017年。

我希望webjob能够收听队列并执行两个并发的webjobs,每个员工一个,周,年标识符。

我无法判断批次或会话是否可以实现此目的。我也无法绕过NServiceBus来了解这是否是一个选项。

注意:webjob任务是幂等的。

1 个答案:

答案 0 :(得分:1)

  

webjob是否有可能在每条新消息之后以较小的延迟收听队列并使用所有相关消息(基于消息ID或会话ID或其他内容)?

开箱即用。要使用ServiceBus触发器不支持的所有相关消息,您需要使用Message Sessions。这个问题确实存在issue(因为它们依赖于WebJobs SDK,还有issue for Azure Functions)。或者,您可以考虑创建一个使用消息会话的自定义WebJob extension

  

我也无法绕过NServiceBus来了解这是否是一个选项。

使用NServiceBus,您可以使用Sagas来实现它。