周末打扰大家一下,目前在学习 Spring Amqp ,小弟知道 Amqp 与 RabbitMq 之间的关系,但是无意间发现了 Spring
Cloud Stream ,我裂开了,明明有 Spring AMQP 这层抽象了,怎么又整了一个 Spring Cloud Stream ?
求明白的大佬指导一波
1
hantsy 2020-06-20 15:38:58 +08:00
Cloud Stream 更抽象些。
抽象 Stream 处理中的 Source,Sink,和 EventListener,Kafka 和 AMQP 都是使用上统一了。 更底层的特别的 API 使用上还是要关注 Spring AMQP 和 Spring for Kafka 。 |
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 中,像命令一样重复使用。 |
3
jinzhongyuan OP @hantsy 从循序渐进上来讲,还是先学习 Spring Amqp 比较好吧?
|
4
huntcool001 2020-06-20 16:07:16 +08:00
Amqp 现在就 RabbitMq 实现了... 这个协议学了有啥意义. RocketMQ, Kafka 都没实现.
|
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 数的话,还算是合格的程序员么? |
6
jinzhongyuan OP @huntcool001 我的意思就是 rabbitmq
|
7
jinzhongyuan OP @xuanbg 有道理,封装多了,反而增加负担啊
|
9
hantsy 2020-06-20 16:19:45 +08:00
|
10
hantsy 2020-06-20 16:21:11 +08:00
@wdmx007 AWS Lambda 逗比吗?实际上一样的设计思路,只是 SCDF 影响力远不如 AWS Lambda 平台。
|
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 不作评价,我没用过。《《生态圈子》》》远不如上面两个,目前感觉还只是博眼球阶段。 |
12
qwerthhusn 2020-06-20 17:39:32 +08:00
还有一个 Spring Cloud Bus,我一直弄不清楚与 Spring Cloud Stream 和 Spring Data AMQP 之间的关系
|