Spring AMQP 相对于 Spring Cloud Stream for Microservices Architecture 有啥好处

Posted

技术标签:

【中文标题】Spring AMQP 相对于 Spring Cloud Stream for Microservices Architecture 有啥好处【英文标题】:What benefits does Spring AMQP have over Spring Cloud Stream for Microservices ArchitectureSpring AMQP 相对于 Spring Cloud Stream for Microservices Architecture 有什么好处 【发布时间】:2017-10-31 16:24:36 【问题描述】:

我使用 Spring Cloud 方法来构建一些应该相互交互的微服务。对于微服务之间的消息传递,我打算使用 RabbitMQ 和 Spring AMQP,但是在我查看 Spring Cloud Stream 之后,我感到迷茫。在我看来,Spring Cloud Stream 是下一个抽象级别(可能太强大了,但您应该得到整体印象),具有许多非常有用的特性。所以我想知道为什么有人会使用 Spring AMQP 进行新的开发?当一个微服务向另一个微服务发送消息并接收回复时,您能否提供 Spring AMQP 优于 Spring Cloud Stream 的任何基本情况?

谢谢。

【问题讨论】:

【参考方案1】:

Spring Cloud Stream 提供了一个自以为是的配置模型,可以连接到外部系统(Binder、Consumer Group 等)。这主要适用于通过管道连接应用程序的Streaming 应用程序。不适合这种自以为是的模型的应用程序可以直接从 Spring Integration (+ Spring AMQP) 进行配置。

例如,Spring Cloud Stream 不提供对 request/reply 等场景的直接支持。你可以阅读this SO question和github issuehere

【讨论】:

非常感谢,现在清楚多了。基本上我可以使用 Spring Cloud Stream,但我必须自己实现请求/回复逻辑,而 Spring Integration (+ Spring AMQP) 开箱即用。

以上是关于Spring AMQP 相对于 Spring Cloud Stream for Microservices Architecture 有啥好处的主要内容,如果未能解决你的问题,请参考以下文章

Spring AMQP项目

spring-cloud-sleuth与spring-amqp集成

Spring AMQP杂记之AMQP基本概念

Spring AMQP杂记之Spring实现简述

Spring Boot 2.X - Spring Boot整合AMQP之RabbitMQ

为啥在 spring-amqp 中导入 AsyncRabbitTemplate