系列导航

一、kafka搭建-单机版

二、kafka搭建-集群搭建

三、kafka集群增加密码验证

四、kafka集群权限增加ACL

五、kafka集群__consumer_offsets副本数修改

六、java操作kafka(没有密码验证)

七、java操作kafka(有密码验证)

kafka环境搭建好了如何通过代码来访问?

先介绍不需要密码验证的kafka集群如何操作

1、环境

包:kafka-clients-0.11.0.1.jar

jkd:1.7

2、kafka配置类

package password; 

import java.util.Properties;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.producer.KafkaProducer; import java.util.Properties; import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.apache.kafka.clients.producer.KafkaProducer; /*
kafka有用户名验证的配置
*/
public class KafkaUtil { //服务器地址 没密码使用PLAINTEXT前缀 有密码了使用SASL_PLAINTEXT前缀
public static final String servers="SASL_PLAINTEXT://192.168.0.104:9092,SASL_PLAINTEXT://192.168.0.105:9092,SASL_PLAINTEXT://192.168.0.106:9092"; //kafka集群生产者配置
public static KafkaProducer<String, String> getProducer(String username,String passwd) {
Properties props = new Properties();
props.put("bootstrap.servers",servers );
props.put("acks", "1");
props.put("retries", 0);
props.put("batch.size", 0);//16384
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.setProperty("security.protocol", "SASL_PLAINTEXT");
props.setProperty("sasl.mechanism", "PLAIN");
String jassc = "org.apache.kafka.common.security.plain.PlainLoginModule required\n"
+ "username=\"" + username + "\"\n"
+ "password=\"" + passwd + "\";";
props.setProperty("sasl.jaas.config", jassc);
KafkaProducer<String, String> kp = new KafkaProducer<String, String>(props); return kp;
} public static KafkaConsumer<String, String> getConsumer(String groupId,String username,String passwd) {
Properties props = new Properties();
props.put("bootstrap.servers", servers);
props.put("auto.offset.reset", "earliest"); //必须要加,如果要读旧数据
props.put("group.id", groupId);
props.put("enable.auto.commit", "false");
props.put("auto.commit.interval.ms", "100");
props.put("max.partition.fetch.bytes", "10240");//每次拉取的消息字节数,10K?,每次取回20条左右
props.put("session.timeout.ms", "30000");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.setProperty ("security.protocol", "SASL_PLAINTEXT");
props.setProperty ("sasl.mechanism", "PLAIN");
String jassc = "org.apache.kafka.common.security.plain.PlainLoginModule required\n"
+ "username = \"" + username + "\"\n"
+ "password =\"" + passwd + "\";";
props.setProperty("sasl.jaas.config", jassc);
KafkaConsumer<String, String> kc = new KafkaConsumer<String, String>(props); return kc;
}
}

3、生产者类ProducerClient

package password; 

import java.util.concurrent.Future;
import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata; /*
* 消费者
*/
public class ProducerClient { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
sendToKafka();
} private static Producer<String, String> producer = KafkaUtil.getProducer("producer","prod-pwd");
public static void sendToKafka( ) {
for(int i=0;i<5000;i++){
try {
final ProducerRecord<String, String> record = new ProducerRecord<String, String>("testTopic",
"d+key-" + i, "{\"name\":\"哈哈\",\"id\":\"218CF4630C2F8795\"}");
Future<RecordMetadata> send = producer.send(record, new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception e) {
if (e != null) {
e.printStackTrace();
}
}
}); System.out.println("sendToKafka-发送至Kafka:" + "d+key-" + i); } catch (Exception e) {
e.printStackTrace(); }
}
producer.close();
}
}

4、消费者类ConsumerClient

package password; 

import java.util.Arrays;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer; /*
消费者
*/
public class ConsumerClient { public static KafkaConsumer<String, String> consumer = null; public static void main(String[] args) {
fecthKafka();
} public static void fecthKafka( ) {
consumer = KafkaUtil.getConsumer("testGroup","producer","prod-pwd"); //group
consumer.subscribe(Arrays.asList("testTopic"));//topics int i=0;
while (true) {
ConsumerRecords<String, String> records ;
try {
records = consumer.poll(Long.MAX_VALUE);//毫秒
}catch (Exception e){
e.printStackTrace();
continue;
} for (ConsumerRecord<String, String> record : records) {
System.out.println("fetched from partition " + record.partition() + ", offset: " + record.offset() + ",key: " + record.key() + ",value:" + record.value() );
i++;
System.out.println(i);
} try {
consumer.commitSync();
} catch (Exception e) {
e.printStackTrace();
continue;
} }
}
}

推荐一个适合零基础学习SQL的网站:不用安装数据库,在线轻松学习SQL!

kafka集群七、java操作kafka(有密码验证)的更多相关文章

  1. Kafka集群安装部署、Kafka生产者、Kafka消费者

    Storm上游数据源之Kakfa 目标: 理解Storm消费的数据来源.理解JMS规范.理解Kafka核心组件.掌握Kakfa生产者API.掌握Kafka消费者API.对流式计算的生态环境有深入的了解 ...

  2. kafka集群的错误处理--kafka一个节点挂了,导致消费失败

    今天由于kafka集群搭建时的配置不当,由于一台主消费者挂掉(服务器崩了,需要维修),导致了所有新版消费者(新版的offset存储在kafka)都无法拉取消息. 由于是线上问题,所以是绝对不能影响用户 ...

  3. Kafka集群监控工具之二--Kafka Eagle

    基于kafka: kafka_2.11-0.11.0.0.tgz kafka-eagle-bin-1.2.1.tar.gz 1.下载解压 tar -zxvf kafka-eagle-bin-1.2.1 ...

  4. kafka集群配置和java编写生产者消费者操作例子

    kafka 安装 修改配置文件 java操作kafka kafka kafka的操作相对来说简单很多 安装 下载kafka http://kafka.apache.org/downloads tar ...

  5. Kafka集群的安装和使用

    Kafka是一种高吞吐量的分布式发布订阅的消息队列系统,原本开发自LinkedIn,用作LinkedIn的活动流(ActivityStream)和运营数据处理管道(Pipeline)的基础.现在它已被 ...

  6. zookeeper kafka集群

    一.部署zookeeper集群 三台机器上执行相同的操作 mkdir -p /data/zookeeper cd zookeeper-3.4.6 cp zoo_sample.cfg zoo.cfg [ ...

  7. Kafka 集群配置SASL+ACL

    一.简介 在Kafka0.9版本之前,Kafka集群时没有安全机制的.Kafka Client应用可以通过连接Zookeeper地址,例如zk1:2181:zk2:2181,zk3:2181等.来获取 ...

  8. kafka集群及监控部署

    1. kafka的定义 kafka是一个分布式消息系统,由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础 ...

  9. CentOS6安装各种大数据软件 第五章:Kafka集群的配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  10. Centos7.5安装kafka集群

    Tags: kafka Centos7.5安装kafka集群 Centos7.5安装kafka集群 主机环境 软件环境 主机规划 主机安装前准备 安装jdk1.8 安装zookeeper 安装kafk ...

随机推荐

  1. 离散傅里叶变换DFT的应用

    目录 一维DFT 1 DFT的相关内容 2 DFT计算结果验证 3 DFT的时频曲线分析 4 DFT的应用 二维DFT 1 DFT在图像处理时的相关内容 2 DFT滤波应用 一维DFT 1 DFT的相 ...

  2. npm install 报-4048错误

    报错原因: 有缓存 权限不够 有三种解决方法: 第一种:找到.npmrc文件并删除 在 C:\Users\自己用户的文件夹\ 下找到 .npmrc 文件并删除 注意:这个文件是隐藏的,需要显示隐藏才能 ...

  3. 江西财经大学第一届程序设计竞赛 G题小Q的口袋校园

    题目链接:https://www.nowcoder.com/acm/contest/115/G 解题思路:题解就一份代码,贪心的思想.先按开始时间进行排序. 然后不断贪心获得happy[ j ]的最大 ...

  4. 聊聊流式数据湖Paimon(三)

    概述 如果表没有定义主键,则默认情况下它是仅追加 表类型(Append Only Table). 根据桶(Bucket)的定义,我们有两种不同的仅追加模式:"Append For Scala ...

  5. selenium之下拉菜单列表定位

    下拉菜单列表定位>>使用Select类定位 from selenium.webdriver.support.ui import Select #导入Select类 select=Selec ...

  6. Linux:LVM磁盘扩容实战

    1.列出分区表 命令:fdisk -l 查看到目前挂载了 vda1.vda2.vda3,并且查看到还有vdb 100G没有挂载,以及现在的LV大小仅为29G root@JumpServer-DB-T0 ...

  7. 确定了-C#是2023年度的编程语言!

    大家好,我是沙漠尽头的狼.在朋友圈看到桂素伟大佬发的喜讯截图,站长赶紧翻译向大家报喜,确定了-C#是2023年度的编程语言! 在TIOBE指数的历史上,C#首次获得了年度编程语言的奖项.祝贺!二十多年 ...

  8. ubuntu upgrade problem

    出现问题: W: Failed to fetch bzip2:/var/lib/apt/lists/partial/ppa.launchpad.net_webupd8team_java_ubuntu_ ...

  9. JavaFx之整合JFoenix(十四)

    JavaFx之整合JFoenix JFoenix是JavaFx流行的UI框架之一 github:https://github.com/sshahine/JFoenix 整合Maven <!--h ...

  10. 前端布局flex从入门到入土

    前端布局flex从入门到入土 作为一个后端,谈不上多会前端,但是一些常见的布局都可以做到,例如flex布局.推荐菜鸟教程的布局:https://www.runoob.com/w3cnote/flex- ...