目前我正在做一个项目的整合工作。在这个项目中,我们需要用java框架Wink公开一个restful api。由于我们有几个其他要集成的组件,我们在api层和其他服务部分之间放置了一个消息队列(activemq)。但这次api层将以异步方式与较低层进行通信。根据我的理解,restful api应该以同步的方式运行。例如,在api层中,如果一个线程收到请求,则响应将在同一线程中返回。因此,这两种沟通方式之间存在内部不匹配。我的问题是我们如何整合这两个部分以使api层工作而不牺牲消息队列中的功能,如可靠性和性能? 任何建议都将在这里得到解决。 感谢
答案 0 :(得分:0)
在REST通信中可以进行异步回调,请参阅此JERSEY框架示例: https://jersey.java.net/documentation/latest/async.html
但是,应该控制延迟,因为您的客户端将等待服务器响应,如果客户端以AJAX方式调用它,则会很好。
最简单的方法是通过“执行器服务”分叉新进程,“执行器服务”将通道中的消息发送到较低级别的api,并在另一个通道中侦听响应(MQ通信)。在流程完成时返回响应,然后更高的API将推回客户端。