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

问题描述 投票:11回答:2

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

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

期待阅读您的意见

spring spring-integration spring-cloud-stream spring-kafka
2个回答
4
投票

带有kafka活页夹的Spring Cloud Stream依赖于Spring-kafka。所以前者所有功能都得到了后来的支持,但前者会更加重量级。以下是一些有助于您做出选择的要点:

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

2
投票

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

如果您打算使用事件采购系统,请使用Spring-Kafka,您可以在其中发布和订阅相同的流。这是Spring Cloud Stream不允许您轻松完成的事情,因为它不允许以下内容

public interface EventStream {
    String STREAM = "event_stream";

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

    @Input(EventStream.STREAM)
    SubscribableChannel stream();
}

Spring Cloud Stream帮助您避免做的一些事情是:

  • 设置序列化程序和反序列化程序
© www.soinside.com 2019 - 2024. All rights reserved.