当前位置: 首页 > 知识库问答 >
问题:

春云Kafka流和春云流的区别?

皇甫飞光
2023-03-14

Spring Cloud Kafka Streams与Spring Cloud Stream、Spring Cloud Function、Spring AMQP和Spring for Apache Kafka有什么区别?

共有1个答案

松景铄
2023-03-14

Spring for Apache Kafka和Spring AMQP分别是为Apache Kafka和AMQP编写Spring友好应用程序的基础库。它们提供了设计模式,例如模板、消息侦听器容器和各种其他机制,以在较低级别与中间件系统交互。这些库不需要Spring Boot,但Spring Framework是最不常见的分母。换句话说,您可以使用这些库编写只有Spring Framework上下文的传统Spring应用程序。

Spring Cloud Function是Spring Cloud组合项目的一部分。这被用作Spring Boot应用程序的一部分。它为编写涉及各种范式的应用程序提供了一致的编程模型,例如请求-响应(HTTP)、事件驱动(pub-sub)、流处理(pub-sub/流)、反应式流等。应用程序级别的编程模型是通过Java8功能模型-例如,您可以将业务逻辑编写为java.util.function.函数

Spring Cloud Stream是另一个专门为事件驱动和流处理用例构建的Spring Cloud项目。因为这是一个Spring Cloud项目,所以它需要用作Spring Boot应用程序的一部分。Spring Cloud Stream的最新版本是建立在Spring Cloud Function提供的基础上的。这本质上是一个目标绑定框架,允许您提供目标——例如Kafka主题或RabbitMQ交换。Spring Cloud Stream将为应用程序绑定这些目标。核心Spring Cloud Stream没有任何中间件依赖项。这就是绑定器实现的用武之地。

Spring Cloud Stream提供两种Kafka活页夹—Spring Cloud Stream活页夹KafkaSpring Cloud Stream活页夹Kafka streams。第一个是活页夹实现,它为编写常规Kafka制作者和消费者提供编程模型支持。在大多数情况下,您可以使用相同的应用程序并提供另一个活页夹(例如spring cloud stream活页夹rabbit),它应该可以工作(前提是应用程序进行了正确的配置更改)。这是因为绑定器关注的是与中间件通信的较低级别细节,而不是应用程序本身。应用程序可以在很大程度上专注于手头的业务逻辑。Spring Cloud Stream中的Kafka Streams绑定器是专门为使用Kafka Streams编写流应用程序而构建的绑定器实现。这两种Kafka绑定器实现都在幕后使用Spring for Apache Kafka。

Spring Cloud Stream中的兔子绑定器在内部使用Spring AMQP。

总结:

  • Spring for Apache Kafka/Spring AMQP-较低级别的基础库,不需要Spring Boot

 类似资料:
  • 我用的是Apache Kafka 2.7.0和Spring Cloud Stream Kafka Streams。 在我的Spring Cloud Stream (Kafka Streams)应用程序中,我已经将我的application.yml配置为当输入主题中的消息出现反序列化错误时使用sendToDlq机制: 我启动了我的应用程序,但我看不到这个主题存在。文档指出,如果 DLQ 主题不存在,

  • 我正试图按照GitHub的建议设置测试 其中StreamProcessor设置为 -->line从不使用在我看来应该在主题“output”上的消息,因为@StreamProcessor有@Sendto(“output”) 我希望能够测试流处理的消息。

  • 当一个DLQ被设置为一个Spring云流Kafka消费者时,DLQ写入的主题可以被分区吗?我有一个要求,使密钥等于一个特定的字段,我想知道这将如何与Spring云流。

  • 我有一个常见的任务问题,我可以找到任何解决方案或帮助(也许我需要传递一些属性来工作?)我使用本地服务器1.3.0.M2并创建简单的流 在日志中,我得到了这个: 2017-09-28 12:31:00.644 信息 5156 --- [ -C-1] o.. a.k.c.c.internals.AbstractCoordinator : 成功加入第 1 代的组测试 2017-09-28 12:31:0

  • 如何提供一个在条件不匹配时调用的处理程序? 如果我有两个处理程序,第一个有条件,第二个没有条件,当第一个条件匹配时,两个处理程序都被调用。我如何避免这种情况?

  • 问题:我试图逐行读取一个大文件,并将消息放入RabbitMQ中。我想在文件末尾提交给rabbitMQ。如果文件中的任何记录是坏的,那么我想撤销发布到队列的消息。 技术:Spring boot、Spring cloud stream、RabbitMQ 你能帮我实现这个过渡的东西吗。我知道如何使用spring cloud Stream读取文件并发布到队列。