文档

对Java客户端和Sarama Go客户端的兼容性说明

更新时间:

本文介绍了Java客户端和Sarama Go在数据层面和管控层面的兼容性详情。

兼容性说明

实例类型

API类型

说明

V3系列实例

数据层面

Java客户端从0.10.2.0-3.7.0均兼容V3系列实例,Sarama Go 客户端从1.20.0 - 1.42.1版本均兼容V3系列实例。

管控层面

常用的操作均能通过Admin本身的API能力或者OpenAPI的能力兼容。

V2系列实例

数据层面

V2实例的云存储Topic不支持幂等和事务能力,其余数据面均兼容。V2实例的Local Topic类型可以兼容所有的 API。

管控层面

客户常用的操作均能通过Admin本身的API能力或者OpenAPI的能力兼容。

Java客户端兼容性测试

Producer

API名称

作用

V2系列实例支持详情

V3系列实例支持详情

send

发送消息

支持

支持

initTransactions

初始化事务

2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持

支持

beginTransaction

开启事务

2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持

支持

sendOffsetsToTransaction

用于在相同的事务中提交消息和消费者的偏移量

2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持

支持

commitTransaction

提交事务

2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持

支持

abortTransaction

废弃事务

2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持

支持

flush

将Buffer中所有的消息都发送到服务端

支持

支持

partitionsFor

获取Topic的元数据信息

支持

支持

enable.idempotence

消息幂等

2.2.x和2.6.x的Local存储Topic支持,云存储Topic不支持

支持

生产者压缩算法:

压缩算法

V2系列实例支持详情

V3系列实例支持详情

gzip

支持

支持

snappy

支持

支持

lz4

支持

支持

zstd

0.10.x版本实例不支持,2.x版本实例支持

支持

Consumer

API名称

作用

V2系列实例支持情况

V3系列实例支持情况

subscription

subscription的方式订阅Topic

支持

支持

assign

assign的方式订阅Topic

支持

支持

unsubscribe

取消订阅

支持

支持

poll

拉取消息

支持

支持

commitSync

同步提交位点

支持

支持

commitAsync

异步提交位点

支持

支持

seek

设置Consumer下一次Poll的位置

支持

支持

seekToBeginning

将Consumer下一次Poll的位置设置为partition的起始位点

支持

支持

seekToEnd

将Consumer下一次Poll的位置设置为partition的最终位点

支持

支持

position

获取下一条Fetch的消息位点

支持

支持

committed

获取已经提交了的位点信息

支持

支持

partitionsFor

获取Topic的元数据信息

支持

支持

listTopics

获取所有的Topic的元数据信息

支持

支持

offsetsForTimes

根据时间戳查找消息的Offset

支持

支持

beginningOffsets

获取partition的起始位点

支持

支持

endOffsets

获取partition的最终位点

支持

支持

groupMetadata

获取Group的元数据信息

支持

支持

enforceRebalance

强制使当前Group执行一次 Rebalance

支持

支持

Admin

API名称

作用

V2系列实例支持情况

V3系列实例支持情况

是否可被OpenAPI替代

createTopics

创建Topic

支持,使用Admin工具支持创建Local存储的Compact topic 和Cloud存储的 Topic。

其中创建Local存储的Compact Topic的时候只支持下列参数:

  • cleanup.policy = compact

  • partitions分区数

  • replication-factor必须为3

创建Cloud存储的 Topic的时候只支持下列参数:

  • cleanup.policy = delete

  • partitions分区数

  • replication-factor必须为 3

支持,使用Admin工具支持创建Cloud存储的Topic。

其中创建Cloud 存储的Topic的时候只支持下列参数:

  • cleanup.policy = delete

  • partitions分区数

  • replication-factor必须为 3

  • retention.ms

是,CreateTopic - 创建Topic

deleteTopics

删除Topic

不支持

不支持

是,DeleteTopic - 删除Topic

ListTopics

列举出Topic

支持

支持

是,GetTopicList - 获取Topic信息

describeTopics

获取Topic的部分信息

支持

支持

是,GetTopicList - 获取Topic信息

createAcls

创建ACL

不支持

不支持

是,CreateAcl - 创建ACL

deleteAcls

删除ACL

不支持

不支持

是,DeleteAcl - 删除ACL

describeConfigs

查看Topic、Group等配置信息

支持

支持

是,GetTopicStatus - 获取消息收发状态GetConsumerProgress - 查询消费组消费状态

alterConfigs

修改Topic等配置

不支持

不支持

是,UpdateTopicConfig - 修改Topic配置

createPartitions

给某个Topic增加分区数量

不支持

不支持

是,ModifyPartitionNum - 修改Topic的分区数

deleteRecords

删除某一个分区的消息

云存储Topic不支持,Local存储 Topic支持

支持

listConsumerGroups

列出所有的消费者组

支持

支持

是,GetConsumerList - 获取Consumer Group信息

listConsumerGroupOffsets

列出消费者组的位点

支持

支持

是,GetConsumerProgress - 查询消费组消费状态

deleteConsumerGroupOffsets

删除消费者组的位点

不支持

支持

deleteConsumerGroups

删除消费者组

支持

支持

是,DeleteConsumerGroup - 删除消费组

listOffsets

获取指定Topic分区的最新和最旧Offset

支持

支持

GetTopicStatus - 获取消息收发状态

alterConsumerGroupOffsets

修改Consumer Group 的 offset

支持

支持

UpdateConsumerOffset - 重置消费者组的消费位点

Sarama Go客户端兼容性测试

Producer

功能

V2系列实例支持情况

V3系列实例支持情况

普通消息发送

支持

支持

幂等消息

支持2.2.x和2.6.x的Local存储Topic,云存储Topic不支持

支持

事务

支持2.2.x和2.6.x的Local存储Topic,云存储Topic不支持

支持

生产者压缩算法:

压缩算法

V2系列实例支持情况

V3系列实例支持情况

gzip

支持

支持

snappy

支持

支持

lz4

支持

支持

zstd

0.10.x版本实例不支持,2.x版本实例支持

支持

Consumer

功能

V2系列实例支持情况

V3系列实例支持情况

subscribe方式消费

支持

支持

assign方式消费

支持

支持

事务隔离级别ReadUncommitted

ReadCommitted

支持

支持

rebalance

支持

支持

已知问题

  • 当Topic新增分区时,Sarama Go客户端无法感知并消费新增分区,需要客户端重启后,才能消费到新增分区。

  • 当Sarama Go客户端同时订阅两个以上的Topic时,有可能会导致部分分区无法正常消费消息。

  • 当Sarama Go客户端的消费位点重置策略设置为Oldest(earliest)时,如果客户端宕机或服务端版本升级,由于Sarama Go客户端自行实现OutOfRange机制,有可能会导致客户端从最小位点开始重新消费所有消息。