我有一个场景,需要同步Web服务在调用异步服务(使用相关标识以稍后识别此事件)后创建响应。异步服务会将结果放入缓存中。而且我的Web服务需要设置一个活动的轮询器/侦听器来等待具有相同相关ID的事件插入到缓存中。一旦记录可用,Web服务就可以创建一个响应对象并将其发送给客户端。通过Mule中的守护进程线程维护多个HttpRequests
现在,异步过程可能需要很长时间,这会导致我的Web服务的主线程空闲。 Web服务正在发展成为一个骡子工作流程,以及确切的情况如下图所示:
|→ async service → update cache → end //Async thread Client--> myWebSvc | |→ setup cache listener → onEvent() → respond to Client //Main thread
是否有骡子的方式,可以帮助我保持地图这样一个HTTPRequests的,并保持它们在守护线程?这将有助于在等待旧的响应时接受新的请求。
我已经开始关注Java NIO,但我无法想象如何将它与Mule工作流程集成。在mule中有没有解决方案可以帮助我释放主线程并将HttpRequest对象存储在地图中以便稍后调用?
更多细节: Web服务是用java实现的。骡子的工作流程是这样的:
|→ async subflow to invoke async process HTTP Request → CXF component → Java component| |→ (sub flow) Java component to listen to events