我正在用C#开发一个Azure功能应用程序,该应用程序旨在控制其他一些微服务的执行。
因此,控制器函数使用一个配置来决定运行哪个微服务。它看起来像这样
{
"executionSequence": [
{
"sequence": 1,
"service": "service1endpoint"
},
{
"sequence": 2,
"service": "service3endpoint"
},
{
"sequence": 3,
"service": "service3endpoint"
}
]
}
基于该配置,控制器决定服务需要运行的顺序。
当每个服务完成其操作时,它会向服务总线发布一条消息,表示其已完成其部分。
{
"serviceName":"service1",
"status":"completed"
}
它触发控制器的队列触发功能,执行序列中的下一项。
按照设计,这些都很好用。但我感到困惑的是,在某些情况下,service1和service2需要并行运行。当两者都完成时,只有服务3需要开火。
因此,在这种情况下,服务1和2的顺序将是1。所以控制器将同时发射1和2。
因此,如果服务1首先完成,它将把消息发布到队列中并触发控制器。但是对于触发服务3,它需要服务2也应该完成。
我们如何处理这种情况。或者除了DB之外,还有其他方式吗?标记1已经完成,还需要完成2,然后再标记消防部门3
请分享你的想法
**Redis缓存未为我们启用