系列导航

一、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. Codeforces Round 878 (Div. 3)

    Codeforces Round 878 (Div. 3) A:ABC A. Cipher Shifer 题意:在自身后面添加一个字母,但是不能添加自身 思路:找到第二个与自身相符的就再找 #incl ...

  2. 京东面试:说说Cookie、Session和Token的区别?

    东子作为目前传统电商三巨头之一(其他还有阿里巴巴和拼多多),其面试题的难度也中规中矩,总体来说没有其他两家面试难度高,当然薪资也没有其他两家薪资高. 其中拼多多的薪资最为离谱,尤其是前几年,听说挖同行 ...

  3. [ICPC2014 WF] Pachinko

    [ICPC2014 WF] Pachinko 题面翻译 题目描述 有一个宽度为 \(w\) 高度为 \(h\) 的方格纸, $ w \times h$ 的格子中,有一些是空的,有一些是洞,有一些是障碍 ...

  4. ElasticSearch-document文档数据-增删改

    文档就是相当于每条记录. 每个文档(数据记录行)都有几个元数据,分别是: _index,表示该文档是那个索引中的. _type,表示文档的类型 _id,文档的唯一ID编号 _score,相关性分数. ...

  5. 2023.2 IDEA安装激活教程

    1.下载安装IntelliJ IDEA 先去官网下载,我这里下载的是最新版本的2023.2,测试过2023最新版本以及2022版本以上的版本没问题. 安装然后打开 提示要输入激活码,先关闭应用,等下再 ...

  6. Office 2016 2019 2021 正版部署

    教学视频:https://www.youtube.com/watch?v=VSjRx7Hoa60 文章摘抄自零度解说:https://www.freedidi.com/6619.html 1.offi ...

  7. node node-sass sass-loader版本兼容问题

    相关概念 sass Sass是一种预处理器脚本语言,可以解释或编译成层叠样式表(CSS). Sass包含两种语法:较旧的语法使用缩进将代码块和换行符分隔为单独的规则:较新的语法SCSS使用像CSS这样 ...

  8. 1、reids 基础

    SortedSet类型 特性 1.可排序 2.元素不重复性 3.查询速度快 与普通的集合类型相比,SortedSet 主要有以下两个特点: 有序性:根据分数对元素进行排序,便于范围查找等操作. 不重复 ...

  9. 自定义Graph Component:1.1-JiebaTokenizer具体实现

      JiebaTokenizer类继承自Tokenizer类,而Tokenizer类又继承自GraphComponent类,GraphComponent类继承自ABC类(抽象基类).本文使用<使 ...

  10. C++篇:第十一章_标准库_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 十一.标准库 include头文件: ① 一般来说,导入objective c的 ...