我正在尝试使用azure durable tasks来协调一些微服务,但是在理解Taskhub如何工作以及正确地协调项目方面却出现了很小的差距。
我正在尝试创建一个主要的编排器,负责启动子编排以完成实际工作。下面是我要实现的目标图。
这个想法是,每个.net项目都将能够独立于其他项目进行扩展,因此,如果.Net项目2承受了相当大的负载,我将只能仅对该项目进行扩展,而不必担心其他2个项目。我遇到的问题是,据我了解,taskhub队列由所有服务共享,因此无法将每个进程仅专注于其工作,这意味着每个项目都可以看到队列中的所有内容,并且可能导致1项目将要发送给项目2的消息出队。这是正确的吗?
通过阅读文档,似乎还不清楚我可以将项目2的子业务流程消息发送给项目3,还是将项目3的特定业务流程发送给项目。
我是否错误地考虑了这个问题,我是否有其他方法可以解决这个问题?
答案 0 :(得分:1)
您想要的东西无法实现。
到目前为止,Azure函数仅允许协调器函数调用同一函数应用程序中存在的活动和子协调器函数。主要原因是技术上的原因:任务中心内的队列在所有功能之间共享,因此无法保证FunctionAppB不会收到针对FunctionAppA的消息。
如果需要跨项目通信,则正确的方法是使用http或队列。