Spring Cloud Bus 消息总线 kafka 集成配置

集成阿里云kafka作为消息总线,参照https://github.com/AliwareMQ/aliware-kafka-demos/tree/master/kafka-spring-stream-demo进行配置

配置topic

spring.cloud.bus.destination=alikafka-xxxxxxxx

禁止自动创建topic

spring.cloud.stream.kafka.binder.autoCreateTopics=false

配置接入点

spring.cloud.stream.kafka.binder.brokers=SASL_SSL://kafka-cn-internet.aliyun.com:8080

根据源代码,可以看到spring clound bus的输入输出通道如下:

/**
 * @author Dave Syer
 *
 */
public interface SpringCloudBusClient {

	String INPUT = "springCloudBusInput";

	String OUTPUT = "springCloudBusOutput";

	@Output(SpringCloudBusClient.OUTPUT)
	MessageChannel springCloudBusOutput();

	@Input(SpringCloudBusClient.INPUT)
	SubscribableChannel springCloudBusInput();
}

输出通道配置

spring.cloud.stream.bindings.springCloudBusOutput.

输入通道配置

spring.cloud.stream.bindings.springCloudBusInput.

配置消费组

spring.cloud.stream.bindings.springCloudBusInput.group=CID_alikafka-xxxxxxxxx

又踩了些坑,因为我已经用到2.0的spring cloud了,但例子里是1.5.x。

2.0的spring cloud bus 的kafka client升级到了1.0.1,而阿里云上的kafka版本还是0.10.0

按上述配置万之后,启动正常,但是发送消息时,会报出一个“Magic v1 does not support record headers”的异常。

这是由于client和broker版本不一致的关系。

参考 https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/290 ,可以通过headerMode配置来解决

在客户端和服务端都增加如下配置:

spring.cloud.stream.default.producer.headerMode=embeddedHeaders
spring.cloud.stream.default.consumer.headerMode=embeddedHeaders

配置中心使用kafka作为消息总线的实现就跑通了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值