Apache kafka 将Kafka升级到2.5.0之后,不推荐使用ZkUtils

Apache kafka 将Kafka升级到2.5.0之后,不推荐使用ZkUtils,apache-kafka,Apache Kafka,卡夫卡从2.3.0升级到2.5.0的一个新变化是删除ZkUtils(请参阅) 删除该用法的最佳实践是什么?我应该使用哪个软件包 public void createTopic(String topicName, int partitions, int replicationFactor) { DataExportConfig conf = ApplicationContextProvider.getApplicationContext().getBean("dataExport

卡夫卡从2.3.0升级到2.5.0的一个新变化是删除ZkUtils(请参阅)

删除该用法的最佳实践是什么?我应该使用哪个软件包

public void createTopic(String topicName, int partitions, int replicationFactor) {
    DataExportConfig conf = ApplicationContextProvider.getApplicationContext().getBean("dataExportConfig", DataExportConfig.class);
    String zKaddress = conf.getZkHost();
    boolean isSecureKafkaCluster = false;

    ZkUtils zkUtils ZkUtils.apply(zKaddress, zkSessionTimeoutMs, zkConnectionTimeOutInMs, isSecureKafkaCluster);
    try {
        if (!AdminUtils.topicExists(zkUtils, topicName)) {
            AdminUtils.createTopic(zkUtils, topicName, partitions, replicationFactor, new Properties(), RackAwareMode.Enforced$.MODULE$);
            //log
        } else {
            //log
        }

        List<String> topicList = Arrays.asList(topicName);
        // checking real partition size for topic
        Integer topicPartitionSizeInZooKeeper = JavaConversions.mapAsJavaMap(zkUtils.getPartitionAssignmentForTopics(JavaConversions.asScalaBuffer(topicList))).get(topicName).size();
        if (topicPartitionSizeInZooKeeper != partitions) {
            //log
    } catch (Exception ex) {
            //log
        throw ex;
    } finally {
        //close zookeeper client after all topics are created
        zkUtils.zkClient().close();
    }
}
public void createTopic(字符串topicName、int分区、int复制因子){
DataExportConfig conf=ApplicationContextProvider.getApplicationContext().getBean(“DataExportConfig”,DataExportConfig.class);
字符串zKaddress=conf.getZkHost();
布尔值isSecureKafkaCluster=false;
ZkUtils ZkUtils ZkUtils.apply(zKaddress、zkSessionTimeoutMs、zkconnectiontimeoutims、isSecureKafkaCluster);
试一试{
if(!adminiutils.topicExists(zkUtils,topicName)){
createTopic(zkUtils、topicName、partitions、replicationFactor、newproperties()、RackAwareMode.exforced$.MODULE$);
//日志
}否则{
//日志
}
List topicList=Arrays.asList(topicName);
//检查主题的实际分区大小
整数topicPartitionSizeInZooKeeper=JavaConversions.mapAsJavaMap(zkUtils.getPartitionAssignmentForTopics(JavaConversions.asScalaBuffer(topicList))).get(topicName).size();
if(topicPartitionSizeInZooKeeper!=分区){
//日志
}捕获(例外情况除外){
//日志
掷骰子;
}最后{
//创建所有主题后关闭zookeeper客户端
zkUtils.zkClient().close();
}
}

您现在需要使用管理API方法来创建主题:

int分区=1;
短复制因子=3;
Properties props=新属性();
props.put(“bootstrap.servers”,“localshot:9092”);
AdminClient admin=AdminClient.create(道具);
新主题=新的新主题(“mytopic”,分区,复制因子);
集合newTopics=Arrays.asList(主题);
CreateTopicsResult ctr=admin.createTopics(newTopics);
ctr.all().get();

您现在需要使用管理API方法来创建主题:

int分区=1;
短复制因子=3;
Properties props=新属性();
props.put(“bootstrap.servers”,“localshot:9092”);
AdminClient admin=AdminClient.create(道具);
新主题=新的新主题(“mytopic”,分区,复制因子);
集合newTopics=Arrays.asList(主题);
CreateTopicsResult ctr=admin.createTopics(newTopics);
ctr.all().get();

如何配置ZkUtils.apply中的超时和安全参数?您可以添加任何管理配置()到
props
配置安全性和超时。您还可以通过使用
CreateTopicsOptions
对象。这非常有帮助。如何配置超时和安全参数,如在ZkUtils.apply中?您可以添加任何管理配置()到
props
配置安全性和超时。您还可以通过使用
CreateTopicsOptions
对象,谢谢。这非常有用