java kafka如何动态设置用户读写权限

 更新时间:2023年08月31日 08:35:14   作者:精英丶阿琦  
这篇文章主要介绍了java kafka如何动态设置用户读写权限问题,具有很好的参考家价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

kafka动态设置用户读写权限

我这里cloud Hoxton.SR8 版本

boot 2.3.0.RELEASE版本

直接上代码了嗷

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.kafka.clients.admin.AdminClient;
import org.apache.kafka.clients.admin.AdminClientConfig;
import org.apache.kafka.clients.admin.DescribeAclsResult;
import org.apache.kafka.common.acl.AccessControlEntry;
import org.apache.kafka.common.acl.AclBinding;
import org.apache.kafka.common.acl.AclBindingFilter;
import org.apache.kafka.common.acl.AclOperation;
import org.apache.kafka.common.acl.AclPermissionType;
import org.apache.kafka.common.resource.PatternType;
import org.apache.kafka.common.resource.ResourcePattern;
import org.apache.kafka.common.resource.ResourceType;
import org.springframework.kafka.core.KafkaAdmin;
public static void main(String[] args) {
        Map<String, Object> configs = new HashMap<>();
        // broker地址,多个用逗号分割
        configs.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "ip:端口");
        configs.put("security.protocol", "SASL_PLAINTEXT");
        configs.put("sasl.mechanism", "SCRAM-SHA-512");
        // 登录broker的账户 admin是管理员
        configs.put("sasl.jaas.config",
            "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"admin\" password=\"admin\";");
        KafkaAdmin admin = new KafkaAdmin(configs);
        AdminClient adminClient = AdminClient.create(admin.getConfigurationProperties());
        // principal:User:test2是需要赋予权限的帐号
        // host:主机 (*号即可)
        // operation:权限操作
        // permissionType:权限类型
        AccessControlEntry ace = new AccessControlEntry("User:test2", "*", AclOperation.WRITE, AclPermissionType.ALLOW);
        // resourceType:资源类型(topic)
        // name:topic名称
        // patternType:资源模式类型
        ResourcePattern rp = new ResourcePattern(ResourceType.TOPIC, "Z7TEST", PatternType.LITERAL);
        AclBinding ab = new AclBinding(rp, ace);
        // 多个权限赋予可以传list
        List<AclBinding> ablist = Arrays.asList(ab);
        adminClient.createAcls(ablist);
        // 可以查看赋予用户的所有权限
        DescribeAclsResult b = adminClient.describeAcls(AclBindingFilter.ANY);
        System.out.println(b.values());
        adminClient.close();
    }

kafka版本

kafka-2.11-2.1.1

  • Kafka 1.0.0 后,Kafka 版本命名规则从 4 位到 3 位
  • Kafka版本号是 2.1.1
  • 前 2 : 大版本号 (MajorVersion)
  • 中 1 : 小版本号或次版本号 (Minor Version)
  • 后 1 : 修订版本号 (Patch)

Kafka 0.7 最早开源版本

  • 只提供最基础的消息队列功能,扭头就跑

Kafka 0.8 

  • 引入了副本机制, 成了分布式高可靠消息队列解决方案
  • 副本备份机制保障了消息无丢失
  • 生产/消费用老客户端 API,要指定 ZooKeeper 的地址 , 而非 Broker的地址
  • 生产者 API,默认用同步方式发送消息,吞吐量一般 (异步方式 : 有可能丢失消息)
  • 0.8.2.0 后 , 引入新 Producer API (Bug),即 : 指定 Broker 地址的 Producer
  • 升到 0.8.2.2 后 , 用老消费者 API (较稳定)

Kafka 0.9.0.0 后 

  • 增加基础的安全认证 / 权限功能
  • 用 Java 重写了新消费者 API (Bug)
  • 引入了 Kafka Connect 组件 , 实现高性能的数据抽取
  • 新 Producer API 较稳定

Kafka 0.10.0.0 后

  • 引入了 Kafka Streams,正式成为分布式流处理平台
  • 自 0.10.2.2 后,新 Consumer API 较稳定

Kafka 0.11.0.0 后

  • 引入幂等性 Producer API 以事务 (Transaction) API (Bug)
  • 对 Kafka 消息格式做了重构
  • 建议用 0.11.0.3

不管用哪个版本,都要保持服务器端版本和客户端版本一致

  • 后果 : 损失 Kafka 的性能优化

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决myBatis返回integer值的问题

    解决myBatis返回integer值的问题

    这篇文章主要介绍了解决myBatis返回integer值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • java调用百度的接口获取起-止位置的距离

    java调用百度的接口获取起-止位置的距离

    本文主要介绍了java调用百度的接口获取起-止位置的距离,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • java如何保证多个线程按一定顺序执行

    java如何保证多个线程按一定顺序执行

    这篇文章主要介绍了java如何保证多个线程按一定顺序执行问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • JAVA最容易忽视的数据类型之枚举详解

    JAVA最容易忽视的数据类型之枚举详解

    这篇文章主要给大家介绍了关于JAVA最容易忽视的数据类型之枚举的相关资料,Java中的枚举类型是一种特殊的类型,它允许程序员定义一个固定的值集合,并为每个值分配一个名称,枚举类型提供了一种简单、安全和可读性强的方式来表示一组相关的常量,需要的朋友可以参考下
    2023-10-10
  • 详解SpringBoot集成Redis来实现缓存技术方案

    详解SpringBoot集成Redis来实现缓存技术方案

    本篇文章主要介绍了详解SpringBoot集成Redis来实现缓存技术方案,具有一定的参考价值,有兴趣的可以了解一下
    2017-06-06
  • java基本教程之synchronized关键字 java多线程教程

    java基本教程之synchronized关键字 java多线程教程

    这篇文章主要介绍了java的synchronized原理、synchronized基本规则、synchronized方法 和 synchronized代码块、实例锁和全局锁
    2014-01-01
  • Java的字符串常量池StringTable详解

    Java的字符串常量池StringTable详解

    这篇文章主要介绍了Java的字符串常量池StringTable详解,JVM为了提高性能和减少内存开销,在实例化字符串常量的时候进行了一些优化,为 了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,需要的朋友可以参考下
    2023-11-11
  • Java中的回调机制使用方式

    Java中的回调机制使用方式

    回调机制是一种编程模式,允许对象在特定事件触发时反向调用调用方,Java中通过接口、抽象类或Lambda实现,支持同步与异步操作,广泛用于事件处理、异步编程等场景,具有解耦优势但也存在回调地狱等维护难题
    2025-08-08
  • Spring源码之事件监听机制(实现EventListener接口方式)

    Spring源码之事件监听机制(实现EventListener接口方式)

    这篇文章主要介绍了Spring源码之事件监听机制(实现EventListener接口方式),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Maven优雅的添加第三方Jar包的方法

    Maven优雅的添加第三方Jar包的方法

    下面小编就为大家带来一篇Maven优雅的添加第三方Jar包的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论