spring-cloud-stream 整合 rocketmq/kafka

前言

阿里推出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的配置,避免不必要的麻烦。


后期如果还有坑,该帖继续更新。

你可能感兴趣的:(spring-cloud-stream 整合 rocketmq/kafka)