kafka调优面试,将CSV的数据发送到kafka(java版),330页PDF,10万字的知识点总结

  1. Java对象序列化成JSON的序列化类:JsonSerializer

public class JsonSerializer {

private final ObjectMapper jsonMapper = new ObjectMapper();

public String toJSONString(T r) {

try {

return jsonMapper.writeValueAsString®;

} catch (JsonProcessingException e) {

throw new IllegalArgumentException("Could not serialize record: " + r, e);

}

}

public byte[] toJSONBytes(T r) {

try {

return jsonMapper.writeValueAsBytes®;

} catch (JsonProcessingException e) {

throw new IllegalArgumentException("Could not serialize record: " + r, e);

}

}

}

  1. 向kafka发送消息的工具类:KafkaProducer:

public class KafkaProducer implements Consumer {

private final String topic;

private final org.apache.kafka.clients.producer.KafkaProducer<byte[], byte[]> producer;

private final JsonSerializer serializer;

public KafkaProducer(String kafkaTopic, String kafkaBrokers) {

this.topic = kafkaTopic;

this.producer = new org.apache.kafka.clients.producer.KafkaProducer<>(createKafkaProperties(kafkaBrokers));

this.serializer = new JsonSerializer<>();

}

@Override

public void accept(UserBehavior record) {

// 将对象序列化成byte数组

byte[] data = serializer.toJSONBytes(record);

// 封装

ProducerRecord<byte[], byte[]> kafkaRecord = new ProducerRecord<>(topic, data);

// 发送

producer.send(kafkaRecord);

// 通过sleep控制消息的速度,请依据自身kafka配置以及flink服务器配置来调整

try {

Thread.sleep(500);

}catch(InterruptedException e){

e.printStackTrace();

}

}

/**

  • kafka配置

  • @param brokers The brokers to connect to.

  • @return A Kafka producer configuration.

*/

private static Properties createKafkaProperties(String brokers) {

Properties kafkaProps = new Properties();

kafkaProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokers);

kafkaProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getCanonicalName());

kafkaProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getCanonicalName());

return kafkaProps;

}

}

  1. 最后是应用类SendMessageApplication,CSV文件路径、kafka的topic和borker地址都在此设置,另外借助java8的Stream API,只需少量代码即可完成所有工作:

public class SendMessageApplication {

public static void main(String[] args) throws Exception {

// 文件地址

String filePath = “D:\temp\202005\02\UserBehavior.csv”;

// kafka topic

String topic = “user_behavior”;

// kafka borker地址

String broker = “192.168.50.43:9092”;

Stream.generate(new UserBehaviorCsvFileReader(filePath))

.sequential()

.forEachOrdered(new KafkaProducer(topic, broker));

}

}

验证

  1. 请确保kafka已经就绪,并且名为user_behavior的topic已经创建;

  2. 请将CSV文件准备好;

  3. 确认SendMessageApplication.java中的文件地址、kafka topic、kafka broker三个参数准确无误;

  4. 运行SendMessageApplication.java;

  5. 开启一个 控制台消息kafka消息,参考命令如下:

./kafka-console-consumer.sh \

–bootstrap-server 127.0.0.1:9092 \

–topic user_behavior \

–consumer-property group.id=old-consumer-test \

–consumer-property consumer.id=old-consumer-cl \

–from-beginning

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2021年最新大厂面试题。
在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

(https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在Java发送数据Kafka,您需要使用Kafka提供的Java客户端库。以下是一个简单的示例代码,演示如何发送数据Kafka: ```java import org.apache.kafka.clients.producer.*; import java.util.Properties; public class KafkaProducerExample { public static void main(String[] args) { String topicName = "your_topic_name"; String bootstrapServers = "your_bootstrap_servers"; // 设置Kafka生产者的配置属性 Properties props = new Properties(); props.put("bootstrap.servers", bootstrapServers); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); // 创建Kafka生产者 Producer<String, String> producer = new KafkaProducer<>(props); try { // 发送一条消息到Kafka String message = "Hello, Kafka!"; ProducerRecord<String, String> record = new ProducerRecord<>(topicName, message); producer.send(record, new Callback() { @Override public void onCompletion(RecordMetadata metadata, Exception exception) { if (exception != null) { System.out.println("消息发送失败:" + exception.getMessage()); } else { System.out.println("消息发送成功,偏移量:" + metadata.offset()); } } }); // 关闭Kafka生产者 producer.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 请确保替换`your_topic_name`和`your_bootstrap_servers`为您的实际值,然后运行此代码即可将消息发送Kafka中的指定主题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值