C# 最佳实践:来自异步处理的同步响应

C# 最佳实践:来自异步处理的同步响应,c#,asp.net-web-api,kubernetes,apache-kafka,distributed-computing,C#,Asp.net Web Api,Kubernetes,Apache Kafka,Distributed Computing,Web API在端点接收客户的信用卡请求数据 端点将包含此数据的消息发送到Kafka 在本主题中,几个吊舱/容器将连接到Kafka,以并行处理每个请求。应用程序需要高异步处理能力 发送请求后,前端将显示进度条并等待。这一过程一结束就需要一个响应 问题 如何在对该端点的同一调用中返回 将在另一个web API项目中完成的处理? (异步) 我的想法 在Kafka中创建一个主题,在发送CreditCardRequest消息到Kafka上的process之后,该主题将被通知处理完成并在端点中订阅 每3

  • Web API在端点接收客户的信用卡请求数据

  • 端点将包含此数据的消息发送到Kafka

  • 在本主题中,几个吊舱/容器将连接到Kafka,以并行处理每个请求。应用程序需要高异步处理能力

  • 发送请求后,前端将显示进度条并等待。这一过程一结束就需要一个响应

  • 问题

    如何在对该端点的同一调用中返回 将在另一个web API项目中完成的处理? (异步)

    我的想法

    • 在Kafka中创建一个主题,在发送CreditCardRequest消息到Kafka上的process之后,该主题将被通知处理完成并在端点中订阅

    • 每3~4秒在mongo上使用一次查询(池),并检查Worker/Pod/Processing容器是否包含该记录。(乌尔格)

    • 为前端创建另一个端点以查询操作状态,此端点还将在mongo中执行查询以检查流程的当前状态


    我很想知道是否已经没有用于这些情况的框架/标准。

    是的,有一些框架可以处理这个问题。 从.NET的角度来看,我在过去使用nServiceBus做过类似的事情(协调长时间运行的进程)

    他们有一个叫做传奇的概念 saga将等待完成处理所需的所有消息,然后通知流程的下一步继续

    如果框架没有用处,那么希望流程是有用的,并且您可以发现如何在Kafka/Mongo环境中实现