【问题标题】:Durable tasks sub orchestration with micro services具有微服务的持久任务子编排
【发布时间】:2023-03-19 11:13:01
【问题描述】:

我正在尝试使用 azure durable tasks 来编排一些微服务,但在理解 taskhub 的工作方式以及正确协调项目方面遇到了一个小差距。

我正在尝试创建一个主编排器,负责启动子编排来完成实际工作。下面是我想要实现的图表。

这个想法是每个 .net 项目将能够独立于另一个进行扩展,因此如果 .Net 项目 2 承受相当大的负载,我将能够仅扩展该项目而不必担心其他2个项目。我遇到的问题是,据我了解,taskhub 队列由所有服务共享,因此无法让每个进程只专注于它的工作,这意味着每个项目都可以看到队列中的所有内容,这可能会导致 1项目将用于项目 2 的消息出列。这是否正确?

通过阅读文档,我似乎并不清楚我可以发送项目 2 的子编排消息以及发送项目 3 的特定编排消息。

我是否错误地考虑了这个问题,我可能想用不同的方法来解决这个问题吗?

【问题讨论】:

    标签: azure-durable-functions


    【解决方案1】:

    你想要的无法实现。

    截至目前,Azure Function 仅允许编排器函数调用存在于同一函数应用中的活动和子编排器函数。主要原因是技术原因:任务中心内的队列在所有函数之间共享,因此无法保证发送给 FunctionAppA 的消息不会被 FunctionAppB 接收。

    如果需要跨项目通信,正确的方法是使用http或者queue。

    【讨论】:

    • 这是对设计/实现的限制吗?或者这是否可以通过将编排服务更改为其他方式来实现?
    • @dbarnes 很多人也提出了你的想法,但是 Azure Function 开发人员还没有很好的方法来支持这一点。所以从一开始就被禁止了。如果你想让Project1控制Project2,或者传递一些信息,你可以做的就是触发Project2,使用http或者queue传递信息。
    猜你喜欢
    • 1970-01-01
    • 2021-07-14
    • 2021-02-16
    • 2018-08-05
    • 2022-11-27
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多