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

kq0g1dla  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(376)

rest微服务怎么可能与另一个混合微服务通信,这意味着他可以与rest和消息队列通信。例如api网关。对于外界来说,他可以通过rest与应用程序mobilephone通信,但后端的通信是通过消息队列进行的。
用例:
我的主页想从数据库中得到一辆车。他通过get请求请求api网关。api网关接收get请求并将其发布到消息队列中。另一个微服务接收消息并发布结果。然后api网关使用结果并将其作为响应发送回去。
我如何实现它?我是在用ApacheKafka的SpringBoot吗?我需要实现异步通信吗?
(对不起,是德语)

zpqajqem

zpqajqem1#

有一些方法可以解决这种情况。
您可以为每个客户机请求创建主题,并在另一端等待答复,例如,driverservice将读取请求消息,获取所有数据并将其发布到客户机请求主题。一旦您使用了响应消息,您就销毁了该主题。
但是在请求-响应交互中删除“临时”主题可能需要很长时间(如果没有任何配置可以避免这种情况,例如delete.topic.enable属性),并且您需要监视可能的主题过度增长。
websocket是另一种可能的解决方案。您的客户机将开始监听一个特定的主题,该主题先前与您的服务器达成一致,然后在一个特定的超时时间内,您将等待响应,此时您的driverservice将发布到该特定的socket通道。
Spring Boot为您提供了Kafka和websockets伟大的开端。如果您希望有大量的事务,我会采用混合策略,使用kafka帮助后端扩展和处理所有事务,然后通过websocket响应客户端。

相关问题