TiCDC发送到Kafka的消息是否可以指定key?

【TiDB 使用环境】测试
TiCDC发送到Kafka的消息是否可以指定key?
经过测试,当使用 partition 为 index-value 时,在消费端监听到的kafka消息也没有传回key ,有什么方式可以设置消息key吗?

https://docs.pingcap.com/zh/tidb/stable/ticdc-sink-to-kafka/#partition-分发器

没找到什么设置key的,但是找到了一些设置dispatcher的文章。

看上去你的问题是没有回传kay,这就有点奇怪了。

我设置的partition = “index-value”,但是消费kafka消息的时候发现没有key;我怀疑是没有设置key,得看看源码才行。消费的时候我看是指定了partition,原则上设置了key会走 kafka 自己的分发策略,不知道是不是出于这方面的考虑,没有设置key,而是根据ticdc自己的策略指定partition。

1 个赞

有没有 key 跟协议有关系,你用的什么协议?

canal-json

image



我看ticdc源码里面是设置了partitionKey的

1 个赞

建议直接在github上引用,截图看不到是什么文件,那一行。也不知道tag对不对。

我的经验是,一般tag和你用的版本能对上,从代码到实现不应该有出入。

还有就是ticdc这个组件最近有了单独的代码库。

https://github.com/pingcap/ticdc

这个就是新的代码库。9.0之后用这个。

老的代码库在

https://github.com/pingcap/tiflow

和dm的代码在一起。9.0之前的版本在这个里面,用tag切换到版本就是对应的代码了。

canal-json 的消息是没有 key 的,只有 value。https://github.com/pingcap/tiflow/blob/b144e40569a40e84b8338bde6287346bc3644e49/pkg/sink/codec/canal/canal_encoder.go#L119C16-L119C22

2 个赞

了解,感谢。我的版本8.5.1,应该在老代码库里

2 个赞

点赞 :+1

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。