Kafka 学习笔记(八)之producer读取file
来源:互联网 发布:c语言好学不 编辑:程序博客网 时间:2024/05/21 13:27
要想让Kafka用到实际中,就需要学会让Kafka从文件中读取内容,发送到topic里,以供consumer读取。我们以前的几篇,自己产生data的,不是从file中读的。
之前先下载好scp,scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令。命令如下:
yum install openssh-clients
从远程server上下载了文件到本地,下载命令:
$scp root@10.6.159.147:/opt/soft/demo.tar /opt/soft/
然后在producer文件里加入读取file的代码,我在前面的SimpleCounter代码基础上加了read file,酱紫方便,主要是我懒。。。
直接贴代码了,从上次的SimpleCounter改的,加入了读取file功能。
package com.shapira.examples.producer.simplecounter;import java.util.concurrent.ExecutionException;import java.io.File;import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileInputStream;import java.io.FileWriter;public class SimpleCounter {private static DemoProducer producer;public static void main(String[] args) throws InterruptedException, ExecutionException {if (args.length == 0) {System.out.println("SimpleCounterOldProducer {broker-list} {topic} {type old/new} {type sync/async} {delay (ms)} {count}");return;}/* get arguments */String brokerList = args[0];String topic = args[1];String age = args[2];String sync = args[3];int delay = Integer.parseInt(args[4]);int count = Integer.parseInt(args[5]);if (age.equals("old"))producer = new DemoProducerOld(topic);else if (age.equals("new"))producer = new DemoProducerNewJava(topic);elseSystem.out.println("Third argument should be old or new, got " + age);/* start a producer */producer.configure(brokerList, sync);producer.start();long startTime = System.currentTimeMillis();System.out.println("Starting...");producer.produce("Starting...");/* produce the numbersfor (int i=0; i < count; i++ ) {producer.produce(Integer.toString(i));Thread.sleep(delay);}*//*read message from file*/try { String pathname = "/root/kafka/datasrc/interfacei.traffic";File filename = new File(pathname); InputStreamReader reader = new InputStreamReader(new FileInputStream(filename)); BufferedReader br = new BufferedReader(reader); String line = "";line = br.readLine();while (line != null) {line = br.readLine(); System.out.println(line);producer.produce(line);}} catch (Exception e) {e.printStackTrace();}long endTime = System.currentTimeMillis();System.out.println("... and we are done. This took " + (endTime - startTime) + " ms.");producer.produce("... and we are done. This took " + (endTime - startTime) + " ms.");/* close shop and leave */producer.close();System.exit(0);}
编译步骤还和以前一样,maven install,然后运行。
下一步研究如何从一个server produce 消息,传到另一个server。这意味着我要在配置一个虚拟机,重新在产生traffic的机子上再装一套软件。。。
0 0
- Kafka 学习笔记(八)之producer读取file
- kafka 学习笔记(二)之Java Producer客户端
- Kafka 学习笔记(4) - Consumer和Producer
- kafka学习笔记 --- Scala实现Kafka producer 和 consumer
- Kafka 学习笔记(十)之consumer写入file
- kafka 之 producer篇
- Kafka 学习笔记(九)producer 和 consumer分别在两个虚拟机上
- Kafka学习笔记 --- Scala实现Events, Controls Producer
- kafka学习之producer端部署及API
- Kafka学习之producer配置(0.8.1版)
- Kafka学习之producer配置(0.8.1版)
- Kafka学习 -- Producer源码分析
- kafka学习四:开发producer
- kafka源码分析之producer
- Kafka系列之-自定义Producer
- Apache Kafka笔记(三):Producer的工作原理
- Kafka Producer
- kafka producer
- JavaScript——高级——DOM——节点访问
- ZOJ 3622 Magic Number(打表)
- Error与Exception
- java基础学习笔记01
- a+b 3
- Kafka 学习笔记(八)之producer读取file
- linux服务器管理tips
- Codeforces 240F. TorCoder 线段树
- 1010. Radix (25)
- Majority Number
- eclipse集成tomcat日志文件输入配置
- BC400-Unit3:Basic ABAP Language Elements
- ZOJ 3623 Battle Ships(dp)
- 华为OJ:输出单向链表中倒数第k个结点