kafka-java消费者与生产者代码示例
引入依赖
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
</dependency>
消费者示例ConsumerMain.java
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer; public class ConsumerMain { public final static String TOPIC = "product_logs_test"; public static void main(String[] args) {
Properties props = new Properties();
//集群地址,多个地址用","分隔
props.put("bootstrap.servers", "masterx1:9092,masterx2:9092,masterx3:9092");
//设置消费者的group id
props.put("group.id", "group_test");
//如果为真,consumer所消费消息的offset将会自动的同步到zookeeper。如果消费者死掉时,由新的consumer使用继续接替
props.put("enable.auto.commit", "true");
//consumer向zookeeper提交offset的频率
props.put("auto.commit.interval.ms", "1000");
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");
KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
List<String> topics = new ArrayList<>();
topics.add(TOPIC);
consumer.subscribe(topics);
while(true) {
ConsumerRecords<String,String> consumerRecords = consumer.poll(100);
for(ConsumerRecord<String,String> consumerRecord : consumerRecords){
try {
String topic = consumerRecord.topic();
System.out.println(topic);
} catch (Exception e) {
e.printStackTrace();
}
}
} }
}
生产者示例ProviderMain.java
import java.util.Properties;
import java.util.concurrent.Future;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata; import net.sf.json.JSONObject; public class ProviderMain { public final static String TOPIC = "product_logs_test"; public static void main(String[] args) {
try {
Properties props = new Properties();
//集群地址,多个地址用","分隔
props.put("bootstrap.servers", "masterx1:9092,masterx2:9092,masterx3:9092");
props.put("session.timeout.ms", "30000");
//序列化
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); KafkaProducer<String, String> producer = new KafkaProducer<>(props);
JSONObject data = new JSONObject();
data.put("name", "TheoryDance");
data.put("fromWhere", "ProductLogTest");
data.put("time", "2020-04-16 16:12:00"); ProducerRecord<String, String> record = new ProducerRecord<>(TOPIC, data.toString());
Future<RecordMetadata> future = producer.send(record);
System.out.println(future.get());
producer.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
如果需要通过logstash进行消费,示例logstash-kafka.conf,各种写法,参考logstash的官方文档
input{
kafka {
topics => ["product_logs_test"]
bootstrap_servers => "192.168.1.xxx:9092"
codec => "json"
group_id => "group_test"
}
}
filter {
}
output {
elasticsearch {
hosts => ["https://192.168.1.xx1:9200","https://192.168.1.xx2:9200","https://192.168.1.xx3:9200"]
index => "product_logs_test"
user => "your_passport"
password => "your_pwd"
cacert => "/usr/xxxx.../CloudSearchService.cer"使用华为云CSS的证数
}
}
示例logstash-simple.conf
input{
file {
path => "/data/tmp/*"
type => "file"
codec => "json"
start_position => "beginning"
}
}
filter {
}
output {
elasticsearch {
hosts => ["https://192.168.1.xx1:9200","https://192.168.1.xx2:9200","https://192.168.1.xx3:9200"]
index => "product_logs_file"
user => "your_passport"
password => "your_pwd"
cacert => "/usr/xxxx.../CloudSearchService.cer"使用华为云CSS的证数
}
}
kafka-java消费者与生产者代码示例的更多相关文章
- java基础之----java常见异常及代码示例
概述 java中有两种错误类型,一个是Exception,一个是Error,都在java.lang包下,一般来说程序中的try...catch捕获的是Exception类型的异常,而Error类型的错 ...
- kafka之三:kafka java 生产消费程序demo示例
kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kafka的安装请参考官方文档. 首先我们需要新建一个maven项目,然后在 ...
- Java 实现金额转换 代码示例
金额转换,阿拉伯数字的金额转换成中国传统的形式如: (¥1011)→(壹仟零壹拾壹元整)输出. 分析: 金额转换,在开发财务相关软件时会经常用到,也是软件本地化的一个需要.一般开发公司或者团队都有相应 ...
- java请求登录接口代码示例
前言 近期研究如何利用java代码如何获取其他系统中所需的数据,自己总结的方法如下: 1.工具类代码 /** * <pre> * 方法体说明:向远程接口发起请求,返回字符串类型结果 * @ ...
- [置顶] think in java interview-高级开发人员面试宝典代码示例
下载资源地址为: http://download.csdn.net/detail/lifetragedy/6379755 这是think in java interview中的代码示例,包括JAVA基 ...
- java实现Kafka的消费者示例
使用java实现Kafka的消费者 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...
- kafka集群和zookeeper集群的部署,kafka的java代码示例
来自:http://doc.okbase.net/QING____/archive/19447.html 也可参考: http://blog.csdn.net/21aspnet/article/det ...
- 整合Kafka到Spark Streaming——代码示例和挑战
作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管.本文,Michael详细的演示了如 ...
- 第23章 java线程通信——生产者/消费者模型案例
第23章 java线程通信--生产者/消费者模型案例 1.案例: package com.rocco; /** * 生产者消费者问题,涉及到几个类 * 第一,这个问题本身就是一个类,即主类 * 第二, ...
随机推荐
- python之路 《六》函数
---恢复内容开始--- 为什么要有函数? 当你的老板要你写一个程序 1 def 函数0(): 2 # 如果cpu占用率>90 3 # 发送邮件 4 # 发出警报 5 6 def 函数1(): ...
- 手写一个Web服务器,极简版Tomcat
网络传输是通过遵守HTTP协议的数据格式来传输的. HTTP协议是由标准化组织W3C(World Wide Web Consortium,万维网联盟)和IETF(Internet Engineerin ...
- tar命令打包和压缩与解压
Linux里压缩与打包时分开的: 打包:多个文件变一个文件.该一个文件会大于整体所有文件,因为会添加各个信息说明哪到哪是一个文件. 压缩:大文件变小文件. 归档:将多个文件变成一个文件,这个文件就是归 ...
- Single Depth peeling 顺序无关渲染(OIT)
什么是顺序无关渲染 在3D渲染中,物体的渲染是按一定的顺序渲染的,这也就可能导致半透明的物体先于不透明的物体渲染,结果就是可能出现半透明物体后的物体由于深度遮挡而没有渲染出来.对于这种情况通常会先渲染 ...
- 解决docker镜像无vim
docker拉取的镜像一般都是ubantu系统 安装vim apt-get update apt-get vim
- 看看吧!月薪20K以上的程序员才能全部掌握RabbitMq知识,你掌握了多少
一.RabbitMq基础知识 0.概述 消息队列的作用就是接收消息生产者的消息,然后将消息发送到消费者 1.信道channel 我的理解是生产者/消费者和rabbitmq交互的一个通道,负责交换机.队 ...
- 怎么用CDR来批量导出图片
我们通过CorelDRAW上方菜单栏"布局"中的"插入页面"可以创建多个页面,同时编辑,适合比如书籍排版,杂志排版等等这些需要进行多页面编辑的工作. 图1:CD ...
- kafka入门之broker--日志存储设计
kafaka并不是直接将原省消息写入日志文件的,相反,它会将消息和一些必要的元数据信息大宝在一起封装成一个record写入日志.其实就是我们之前介绍的batch 具体对每个日志而言,kafka又将其进 ...
- 我与PHP,ULM和Vue.js不得不说的故事(我与PHP白月光的那些事儿之第三年的见异思迁番外篇)
关于PHP的认知 -----恍惚间眸眼像极了一位故人 第一年遇见,那时的它还稚嫩懵懂.像白纸一样的脸,极容易读懂.于是放荡不羁,不放真心.稍微用心,它便能高兴好久.初识它时它叫C语言,浅尝却不觉其难过 ...
- Unity使用transform.Rotate进行三维旋转角度出现偏差
Unity使用transform.Rotate进行三维旋转角度出现偏差 情形 最开始遇到该问题的情况比较复杂,另写了一个例子.情形如下: 一个立方体上挂载脚本: transform.Rotate(25 ...