前言
阿里推出spring-cloud-alibaba,实现了cloud-stream 和 rocketmq 的整合。整合过程中出现的一些坑在这里分享一下。
1.整合rocketmq
项目中用到的spring-cloud版本是

但是使用的spring-cloud-starter-stream-rocketmq的版本是 0.2.1

此时项目启动会报错

查看官方文档上标注 ###如何引入依赖,项目的最新版本是 0.2.1.RELEASE 和 0.1.1RELEASE,版本0.2.1对应的是Spring Cloud Finchley 版本,版本 0.1.1对应的是 Spring Cloud Edgware 版本。因此将rocketmq版本调整为0.1.1,启动OK
2.整合kafka
整合kafka的坑比较多,主要是配置问题。
a.项目中Kafka并未用到ZK作为注册中心,因此配置中如果增加了zkNodes的绑定配置就会报错。重点注意这一行配置

该配置默认为true,启动时候会通过zk找到kafka的broker,如果kafka未配置注册中心,此时会报一个 1 replicationFactor more than 0 broker, 副本数量是不允许大于broker数量,该配置必须设置为false(spring.cloud.stream.kafka.binder.autoCreateTopics=false)
b.多配置文件导致实例化 KafkaMessageChannelBinder失败。
第一次实例化该bean的时候,会createKafkaConsumerFactory,该方法会getConsumerConfiguration,返回的是一个unmodifiableMap,第二次调用将会抛出

因此,一份配置文件应该涵盖所有spring-cloud-stream的配置,避免不必要的麻烦。
后期如果还有坑,该帖继续更新。