Spring-Kafka vs. Spring-Cloud-Stream(Kafka)

Eik*_*nds 16 spring spring-integration spring-cloud-stream spring-kafka

使用Kafka作为微服务架构中的消息传递系统,使用spring-kafka与spring-cloud-stream + spring-cloud-starter-stream-kafka有什么好处?

Spring云流框架支持更多的消息传递系统,因此具有更多的模块化设计.但功能呢?spring-kafka和spring-cloud-stream + spring-cloud-starter-stream-kafka的功能之间是否存在差距?哪个API设计得更好?

期待阅读您的意见

War*_*Zhu 7

具有kafka活页夹的Spring Cloud Stream依赖于Spring-kafka。因此,前者的所有功能都会受到后者的支持,但是前者将变得更加繁重。以下几点可帮助您做出选择:

  1. 如果您将来可能将kafka更改为另一个消息中间件,那么应该选择Spring Cloud流,因为它隐藏了kafka的实现细节。
  2. 如果您想将其他消息中间件与kafka集成,则应该使用Spring Cloud流,因为它的卖点是使这种集成变得容易。
  3. 如果您想享受简单性而不接受性能开销,请选择spring-kafka
  4. 如果您计划迁移到公共云服务,请使用Spring Cloud系列中的Spring Cloud Stream。


Arc*_*ano 5

在创建一个使用一个通道进行输入的系统时,请使用Spring Cloud Stream进行一些处理并将其发送到一个输出通道。换句话说,替换说说RESTful API调用更像是RPC系统。

如果您打算建立一个事件源系统,请使用Spring-Kafka,您可以在其中发布和订阅相同的流。这是Spring Cloud Stream不允许您轻松执行的操作,因为它不允许执行以下操作

public interface EventStream {
    String STREAM = "event_stream";

    @Output(EventStream.STREAM)
    MessageChannel publisher();

    @Input(EventStream.STREAM)
    SubscribableChannel stream();
}
Run Code Online (Sandbox Code Playgroud)

Spring Cloud Stream帮助您避免的几件事是:

  • 设置序列化器和反序列化器