简而言之,以下是场景:
用户点击了一个需要我的应用程序提供信息的同步端点。我的应用程序向另一个只注册订单的服务请求该信息,并给我一个引用即将到来的信息的键。为了有效地获取这些信息,我需要监听一个队列,该队列最终将异步地提供这些信息。
我需要向我的用户“假装”整个过程是同步的,以便他们请求我的端点并在响应中立即获得信息。
异步回调不会花费更长的时间,我们有一个超时策略,所以它可以按预期工作。不幸的是,我们无法更改外部服务流(它可以是同步的,但不是)。
我们脑海中闪过的几个想法:
一种轮询方法:在队列侦听器的上下文中,信息到达存储引擎(redis)后,我们就将其持久化。同时,我们的请求请求存储中的信息(添加sleep命令以在每次尝试之间执行延迟)。如果找到了,我们就返回它,如果时间超过了,就会引发异常。
pub/sub方法:我们在用户请求上下文(在api请求中)订阅该存储(redis),强制它等待密钥到达。在我们持久化键/值对(使用前面描述的相同机制,使用队列侦听器)之后,我的redis订户将收到通知,请求将被释放,响应将被发送。
你们对我们如何更好地解决这个问题还有什么想法吗?
对不起,如果我没有让别人明白我的意思。如果需要的话,我可以再深入一点。
提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!