Spring启动微服务之间的异步通信

时间:2017-10-05 12:00:04

标签: asynchronous spring-boot microservices spring-rabbitmq

我是春季启动的新手,并创建了2个微服务。 他们需要以同步和异步方式彼此通信。 对于同步通信,我可以使用RestTemplate。 但是如何进行异步调用呢? 我对Asynchonous的要求是: 假设我正在通过一个微服务查询某些内容。要获取查询的数据,由于查询了大量数据,因此需要一段时间。 在这种情况下,我需要将请求保存到某个事务表中,并使用transactionId和callBackAPI返回响应。如果我用transactionId调用callBackAPI,有一段时间后。然后我应该能够获得先前查询的数据。

请帮助我。

感谢。

1 个答案:

答案 0 :(得分:1)

两种解决方案:

来自您客户的异步电话: Spring提供了RestTemplate的异步版本: AsyncRestTemplate 使用此解决方案,您的客户端是异步的,您不需要将数据存储在具有事务ID和内容的表中。

使您的端点异步(如果您不需要响应): Spring允许您创建可以从RestController调用的asynchronous methods(services)。使用此解决方案,您可以执行您在问题中描述的内容(创建和存储将直接返回到客户端并启动异步作业的事务ID)。