。Net核心-具有不同响应回调的多个服务请求

问题描述 投票:-1回答:1

因此,我目前正在开发一个向应用程序发出多个异步请求的Web应用程序(.NET Core 2.1)。>

从JavaScript中,我制定并提出了请求,以后将由我指定的控制器/方法接收:

JavaScript requests

Methods in controller

控制器中的每个功能都向服务发送请求。

一旦服务完成对请求的处理,就会在我的Web应用程序中触发一个回调函数,我可以在其中访问响应并将其发送回我的客户端:

Callback function

我的问题是,我的请求中的每个请求都有一个不同的响应回调,因此我需要等待它被调用,然后才能继续获取响应值并将其返回给我的客户端。

因为请求是异步的,所以我尝试实现线程,并使用ManualResetEvent / AutoResetEvent使线程等待回调被触发,然后在分配响应后释放它们;但是,我这样做并没有成功,因为每当我停止阻塞其中一个线程以让下一个线程运行并到达其回调时,就不会成功。所有线程都被释放,导致在有机会填充返回的对象之前触发控制器方法中的“返回”(回调被触发[[after

我已将响应发送给客户端,导致响应为null /空)。关于如何处理此问题的任何想法?

整个过程是:

1)客户端创建一个请求并将其发送到RabbitMQ。

2)Rabbit获取请求,并将其发送到侦听该类型请求的任何服务。

3)服务接收请求,处理请求,创建响应对象并将其发送给Rabbit。

4)Rabbit获取响应并将其发送给所有侦听该类型响应的客户端。

5)我的客户端(侦听该类型的响应)通过回调方法获取响应,然后我可以返回服务发送的任何值。

因此,我目前正在开发一个Web应用程序(.NET Core 2.1),该应用程序向一个服务发出多个异步请求。通过JavaScript,我正在制定和提出稍后将在...

c# asp.net-core asynchronous callback microservices
1个回答
0
投票
您必须整合这两个呼叫。它们可以作为单个API方法集成到您的控制器中。此外,您还可以在前端进行操作,只需使用promises即可。如果一项任务取决于另一项任务的结果,则使用线程将没有任何优势。由于第二个直到第一个返回结果时才运行,因此它们将同步执行。有两个示例,您如何做到这一点:
© www.soinside.com 2019 - 2024. All rights reserved.