Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何从REST到消息队列进行通信_Spring_Rest_Apache Kafka_Message Queue_Microservices - Fatal编程技术网

Spring 如何从REST到消息队列进行通信

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一起使用?我需要实现异步通信

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控制器中等待异步响应/超时。