Spring 如何从REST到消息队列进行通信
REST微服务如何可能与另一个混合微服务通信,这意味着他可以与REST和消息队列通信。例如,API网关。对于外部世界,他能够通过REST与应用程序Mobilephone通信,但后端的通信是通过消息队列进行的 用例: 我的主页希望从数据库中获取车辆。他通过GET请求请求API网关。API网关接收GET请求并将其发布到消息队列中。另一个微服务接收消息并发布结果。然后API网关使用结果并将其作为响应发送回 我如何实现它?我是否将Spring boot与ApacheKafka一起使用?我需要实现异步通信吗 (对不起,是德语)Spring 如何从REST到消息队列进行通信,spring,rest,apache-kafka,message-queue,microservices,Spring,Rest,Apache Kafka,Message Queue,Microservices,REST微服务如何可能与另一个混合微服务通信,这意味着他可以与REST和消息队列通信。例如,API网关。对于外部世界,他能够通过REST与应用程序Mobilephone通信,但后端的通信是通过消息队列进行的 用例: 我的主页希望从数据库中获取车辆。他通过GET请求请求API网关。API网关接收GET请求并将其发布到消息队列中。另一个微服务接收消息并发布结果。然后API网关使用结果并将其作为响应发送回 我如何实现它?我是否将Spring boot与ApacheKafka一起使用?我需要实现异步通信
有一些方法可以解决这种情况 您可以为每个客户端请求创建主题,并在另一端等待答复,例如,DriverService将读取请求消息,获取所有数据并将其发布到客户端请求主题。一旦您使用了响应消息,您就破坏了该主题 但是在请求-响应交互中删除“临时”主题可能需要很长时间(如果没有任何配置可以避免,例如delete.topic.enable属性),并且您需要监视可能的主题过度增长 Websocket是另一种可能的解决方案。您的客户机将开始收听之前与服务器商定的特定主题,然后在特定超时等待响应,此时您的DriverService将发布到该特定套接字通道
Spring Boot为您提供了卡夫卡和Websockets的绝佳起点。如果您希望有大量事务,我将采用混合策略,使用Kafka帮助我的后端扩展和处理所有事务,然后通过Websocket响应客户端。我认为您应该在rest控制器中等待异步响应/超时。