使用Webflux框架时微服务之间的异步相互通信

时间:2018-08-20 11:25:36

标签: microservices

我正在开始研究具有微服务架构的webflux框架。 我需要以异步方式在微服务之间建立内部连接,据我了解,当使用webClient构建器时,我可以使用webflux框架来做到这一点: 例如:

@Autowired
private WebClient.Builder webClientBuilder;
@GetMapping("/{id}/with-accounts")
public Mono findByIdWithAccounts(@PathVariable("id") String id) {
 LOGGER.info("findByIdWithAccounts: id={}", id);
 Flux accounts = webClientBuilder.build().get().uri("http://account-service/customer/{customer}", id).retrieve().bodyToFlux(Account.class);
 return accounts
  .collectList()
  .map(a -> new Customer(a))
  .mergeWith(repository.findById(id))
  .collectList()
  .map(CustomerMapper::map);
}

其中“帐户服务”是我的微服务,因此对于这种方法,我使用REST端点以非阻塞方式获得了简单的代码。如前所述,由于异步,我主要针对微服务内部通信而建议使用消息队列模式。但是现在,当我们有了带有webClient构建器的非阻塞式webflux框架时,也许不再需要使用消息队列进行内部通信了吗?

我只是在流浪吗?感谢您的回答!

0 个答案:

没有答案