我正在尝试以事件驱动的体系结构样式设计系统,还尝试公开REST API以发送命令/查询。我决定将Kafka用作消息代理。 我要设计的编舞如下:
对我来说最模糊的部分是如何实现事件联接:
我知道我可以在客户端使用其他协议(例如WebSockets),但是我不愿意这样做,因为我需要向第三方公开此类API。我还可以进行异步客户端调用并进行轮询,以检查请求是否已完成,但是管理起来似乎很复杂。 建议实现这种交互的方式是什么?
p.s。我正在使用Spring Boot和Spring Cloud Stream。
答案 0 :(得分:1)
spring-cloud-stream可以在客户端进行请求/回复消息传递,但这涉及到一点,因为它不是为此而设计的,而是用于单向流处理的。
最好在客户端使用spring-kafka(ReplyingKafkaTemplate)或spring-integration-kafka(Outbound Gateway)进行请求/回复。
在服务端,您可以使用@StreamListener
(spring-cloud-stream)或@KafkaListener
或spring-integration入站网关。