kafka集群七、java操作kafka(有密码验证)
系列导航
五、kafka集群__consumer_offsets副本数修改
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(有密码验证)的更多相关文章
- Kafka集群安装部署、Kafka生产者、Kafka消费者
Storm上游数据源之Kakfa 目标: 理解Storm消费的数据来源.理解JMS规范.理解Kafka核心组件.掌握Kakfa生产者API.掌握Kafka消费者API.对流式计算的生态环境有深入的了解 ...
- kafka集群的错误处理--kafka一个节点挂了,导致消费失败
今天由于kafka集群搭建时的配置不当,由于一台主消费者挂掉(服务器崩了,需要维修),导致了所有新版消费者(新版的offset存储在kafka)都无法拉取消息. 由于是线上问题,所以是绝对不能影响用户 ...
- 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 ...
- kafka集群配置和java编写生产者消费者操作例子
kafka 安装 修改配置文件 java操作kafka kafka kafka的操作相对来说简单很多 安装 下载kafka http://kafka.apache.org/downloads tar ...
- Kafka集群的安装和使用
Kafka是一种高吞吐量的分布式发布订阅的消息队列系统,原本开发自LinkedIn,用作LinkedIn的活动流(ActivityStream)和运营数据处理管道(Pipeline)的基础.现在它已被 ...
- zookeeper kafka集群
一.部署zookeeper集群 三台机器上执行相同的操作 mkdir -p /data/zookeeper cd zookeeper-3.4.6 cp zoo_sample.cfg zoo.cfg [ ...
- Kafka 集群配置SASL+ACL
一.简介 在Kafka0.9版本之前,Kafka集群时没有安全机制的.Kafka Client应用可以通过连接Zookeeper地址,例如zk1:2181:zk2:2181,zk3:2181等.来获取 ...
- kafka集群及监控部署
1. kafka的定义 kafka是一个分布式消息系统,由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础 ...
- CentOS6安装各种大数据软件 第五章:Kafka集群的配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- Centos7.5安装kafka集群
Tags: kafka Centos7.5安装kafka集群 Centos7.5安装kafka集群 主机环境 软件环境 主机规划 主机安装前准备 安装jdk1.8 安装zookeeper 安装kafk ...
随机推荐
- 可视化学习:WebGL的基础使用
引言 继续复习可视化的学习.WebGL和其他Web端的图形系统存在很大的不同,是OpenGL ES规范在浏览器的实现,它最大的不同就在于它更接近底层,可以由开发者直接操作GPU来实现绘图,性能很好,可 ...
- Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same(解决)
问题描述 在使用pytorch训练经典的MNIST数据集时,运行时,出现了以下的问题: Input type (torch.FloatTensor) and weight type (torch.cu ...
- 使用Py2neo更新Neo4j中节点的属性值的正确姿势
1 def findNode(name, graph): 2 matcher = NodeMatcher(graph) 3 m = matcher.match(name = name).first() ...
- bash shell笔记整理——cat命令
cat命令的作用 简单来说cat命令用于查看文件内容,但是真正来说cat将给定的文件或者标准输入输出到标准输出中. 这个命令时会经常使用到的,不管是在shell脚本的编写还是linux运维测试中,ca ...
- CVE-2016-5734 复现
CVE-2016-5734 漏洞简介 phpMyAdmin 4.0.x-4.6.2 远程代码执行漏洞(CVE-2016-5734) phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工 ...
- 开源、强大的Linux服务器集群管理工具,比宝塔好用!
在这之前肯定很多人都接触过Linux管理面板:宝塔,宝塔的确非常方便而且好用,安装也简单,复制粘贴几句命令即可安装完成,且提供免费版.今天呢,民工哥向大家介绍另一个Linux的服务器管理面板--App ...
- BUUCTF Reverse 新年快乐
下载文件先查壳,可以看到有UPX壳 用upx脱壳 拖到ida pro32,shift+F12查看字符串,看到关键字flag,双击进去 双击然后f5查看伪代码 main函数伪代码 关键函数: strnc ...
- NSSCTF Round#16 Basic crypto misc-wp
CRYPTO pr 题目 CRT from Crypto.Util.number import * import random flag=plaintext = 'NSSCTF{*********** ...
- AES加密技术:原理与应用
一.引言 随着信息技术的飞速发展,数据安全已成为越来越受到重视的领域.加密技术作为保障数据安全的重要手段,在信息安全领域发挥着举足轻重的作用.AES(Advanced Encryption Stand ...
- JavaScript异步编程3——Promise的链式使用
目录 概述 详论 1️⃣回调地狱 2️⃣Promise实现 参考 概述 在上一篇文章<JavaScript异步编程2--结合XMLHttpRequest使用Promise>中,简要介绍了A ...