用于构建高度可扩展的事件驱动型微服务
这句话听起来很拗口,实际上就是用于简化我们的应用程序对接MQ中间件的工作
为啥需要它
假设我们现在使用的mq是rabbit,如果现在要切换到kafka,我们可能需要修改很多生产者和消费者应用的代码
SpringCloud Stream就是为了将应用程序和MQ进行解耦
看下官网的图
- binder 提供与MQ中间件集成、交互能力
- inputs和outputs是SpringCloud stream 的通道,实现应用程序和binder的交互
如果需要更换MQ中间件时,只需要替换binder就可以,应用程序可能只需要修改一下连接配置即可完成切换
使用demo
- 启动zk ,启动kafka
docker run -d --name zookeeper -p 2181:2181 -t zookeeper
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=localhost:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
- 代码已经上传到gitee
关注2个模块:
demo.stream.p
demo.stream.c