V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jinzhongyuan
V2EX  ›  Java

请问 Spring cloud Stream 和 Spring Amqp 之间的关系

  •  
  •   jinzhongyuan · 2020-06-20 15:15:45 +08:00 · 2947 次点击
    这是一个创建于 1617 天前的主题,其中的信息可能已经有所发展或是发生改变。

    周末打扰大家一下,目前在学习 Spring Amqp ,小弟知道 Amqp 与 RabbitMq 之间的关系,但是无意间发现了 Spring

    Cloud Stream ,我裂开了,明明有 Spring AMQP 这层抽象了,怎么又整了一个 Spring Cloud Stream ?

    求明白的大佬指导一波

    12 条回复    2020-06-20 17:39:32 +08:00
    hantsy
        1
    hantsy  
       2020-06-20 15:38:58 +08:00
    Cloud Stream 更抽象些。

    抽象 Stream 处理中的 Source,Sink,和 EventListener,Kafka 和 AMQP 都是使用上统一了。

    更底层的特别的 API 使用上还是要关注 Spring AMQP 和 Spring for Kafka 。
    hantsy
        2
    hantsy  
       2020-06-20 15:41:43 +08:00
    说到 Source,Sink 。

    Spring 另外一个大杀器,Spring Cloud Data Flow, 可以连接各种 Source,Sink,中间处理可以用 Spring Cloud Function ( Serverless ),自己的 Serverless 程序可以安装到 SCDF 中,像命令一样重复使用。
    jinzhongyuan
        3
    jinzhongyuan  
    OP
       2020-06-20 15:49:34 +08:00
    @hantsy 从循序渐进上来讲,还是先学习 Spring Amqp 比较好吧?
    huntcool001
        4
    huntcool001  
       2020-06-20 16:07:16 +08:00
    Amqp 现在就 RabbitMq 实现了... 这个协议学了有啥意义. RocketMQ, Kafka 都没实现.
    xuanbg
        5
    xuanbg  
       2020-06-20 16:08:16 +08:00
    RabbitMq 是基于 Amqp 标准的实现,Spring Amqp 可以连接任何支持 Amqp 标准的 MQ 。Cloud Stream 则是对 Spring Amqp 等又封装了一层,可以连接更多种类的 MQ 。

    不过我并不觉得 Cloud Stream 是个正确的方向,反正我没有在同一个项目里面使用多种 MQ 的需求。 程序员连自己该使用什么组件都没点 B 数的话,还算是合格的程序员么?
    jinzhongyuan
        6
    jinzhongyuan  
    OP
       2020-06-20 16:11:24 +08:00
    @huntcool001 我的意思就是 rabbitmq
    jinzhongyuan
        7
    jinzhongyuan  
    OP
       2020-06-20 16:12:18 +08:00
    @xuanbg 有道理,封装多了,反而增加负担啊
    wdmx007
        8
    wdmx007  
       2020-06-20 16:19:25 +08:00 via Android
    @hantsy 不觉得 data flow 超级逗比吗?[狗头]
    hantsy
        9
    hantsy  
       2020-06-20 16:19:45 +08:00
    @xuanbg 从微调 MQ 的角度,我还首选 Spring AMQP 。

    Cloud Stream 更多的解决互通问题,隐藏 MQ 的细节配置,猛看各种 MQ 用法差不多。
    hantsy
        10
    hantsy  
       2020-06-20 16:21:11 +08:00
    @wdmx007 AWS Lambda 逗比吗?实际上一样的设计思路,只是 SCDF 影响力远不如 AWS Lambda 平台。
    hantsy
        11
    hantsy  
       2020-06-20 16:36:22 +08:00
    @huntcool001 实现 AMQP 协议的 Message Broker 很多吧,Apache ActiveMQ,Redhat AMQ 好像也实现。

    https://www.amqp.org/about/examples

    RabbitMQ 还支持 MQTT 协议( Iot 处理协议,前几年的 Spring 大会演示过出租跟踪程序),还支持 STOMP 扩展,与 Websokcet 结合(消息走 RabbitMQ,减轻应用服务器压力)。这些在 Spring AMQP (与 RabbitMQ 一起使用时) 都支持很好。如果只关注消息, 在 Spring 中使用 Spring AMQP 和 RabbitMQ 基本是不二之选,太成熟了。

    Kafka 在 Spring 中 Spring For Kafka 项目支持,除了做 Message Broker 外,Kafka 一个重要的角度是 Stream processing 。

    RecketMQ 不作评价,我没用过。《《生态圈子》》》远不如上面两个,目前感觉还只是博眼球阶段。
    qwerthhusn
        12
    qwerthhusn  
       2020-06-20 17:39:32 +08:00
    还有一个 Spring Cloud Bus,我一直弄不清楚与 Spring Cloud Stream 和 Spring Data AMQP 之间的关系
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2826 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:19 · PVG 21:19 · LAX 05:19 · JFK 08:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.