kafka consumer 0.8.2.1示例代码
package test_kafka; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger; import kafka.consumer.Consumer;
import kafka.consumer.ConsumerConfig;
import kafka.consumer.ConsumerIterator;
import kafka.consumer.ConsumerTimeoutException;
import kafka.consumer.KafkaStream;
import kafka.javaapi.consumer.ConsumerConnector; public class KafkaConsumerApi { public ConsumerConnector consumer;
private AtomicInteger sendCount; public Properties initProperties(String broker, String groupId) {
Properties properties = new Properties();
properties.put("zookeeper.connect", broker);
properties.put("group.id", groupId);
properties.put("auto.offset.reset", "smallest");
properties.put("auto.commit.enable", "false");
properties.put("zookeeper.session.timeout.ms", "4000");
properties.put("zookeeper.sync.time.ms", "200");
properties.put("consumer.timeout.ms", "10000");
return properties;
} public static void main(String[] args) throws Exception {
new KafkaConsumerApi().start();
} public void start() {
String topic = "test_010_kafka";
String groupId = "test3";
Properties properties = initProperties("192.168.137.131:2181", groupId);
Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
topicCountMap.put(topic, new Integer(1));
ConsumerConfig config = new ConsumerConfig(properties);
sendCount = new AtomicInteger(0);
while (true) {
System.out.println("start to consumer Messages.");
List<byte[]> bytes = new ArrayList<byte[]>();
try {
consumer = Consumer.createJavaConsumerConnector(config);
Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = consumer
.createMessageStreams(topicCountMap);
KafkaStream<byte[], byte[]> stream = consumerMap.get(topic).get(0);
ConsumerIterator<byte[], byte[]> it = stream.iterator();
while (true) {
try {
while (it.hasNext()) {
bytes.add(it.next().message());
if (bytes.size() >= 8) {
submitMessage(bytes);
}
}
} catch (ConsumerTimeoutException e) {
System.out.println("-------------------------ConsumerTimeoutException---------------------------");
if (bytes.size() > 0) {
submitMessage(bytes);
}
}
}
} catch (Exception e) {
e.printStackTrace();
sleepSeconds(60);
}
}
} public void submitMessage(List<byte[]> bytes) {
int size = bytes.size();
if (exceute(bytes)) {
consumer.commitOffsets();
System.out.println("consumer message size:" + size + ", and consumer total count:" + sendCount.addAndGet(size));
bytes.clear();
}
} public boolean exceute(List<byte[]> bytes) {
for (byte[] str : bytes) {
System.out.println(new String(str));
}
return true;
} public void sleepSeconds(int seconds) {
try {
Thread.sleep(seconds * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} }
kafka consumer 0.8.2.1示例代码的更多相关文章
- RSS介绍、RSS 2.0规范说明和示例代码
RSS是一种消息来源格式规范,用以发布经常更新资料的网站,例如博客.新闻的网摘.RSS文件,又称做摘要.网摘.更新.频道等,包含了全文或节选文字,再加上一定的属性数据.RSS让发布者自动发布信息,也使 ...
- kafka producer 0.8.2.1 示例
package test_kafka; import java.util.Properties; import java.util.concurrent.atomic.AtomicInteger; i ...
- SkylineGlobe 7.0版本 矢量数据查询示例代码
在Pro7.0.0和7.0.1环境下测试可用. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- kafka consumer 代码示例
使用者小组 使得许多进程的多台机器 在逻辑上作为一个单个的使用者 出现. 我们使用中,一种常见的情况是,我们按照逻辑划分出多个使用者小组,每个小组都是有作为一个逻辑整体的多台使用者计算机组成的集群. ...
- kafka consumer代码梳理
kafka consumer是一个单纯的单线程程序,因此相对于producer会更好理解些.阅读consumer代码的关键是理解回调,因为consumer中使用了大量的回调函数.参看kafka中的回调 ...
- SkylineGlobe TerraExplorer Pro 7.0 Web 控件版 第一行示例代码
SkylineGlobe TerraExplorer Pro 7.0 是原生的64位应用程序,在Web端用插件方式开发的第一行示例代码如下: 常规代码,需要IE64位: <!DOCTYPE ht ...
- kafka的Java客户端示例代码(kafka_2.11-0.8.2.2)
1.使用Producer API发送消息到Kafka 从版本0.9开始被KafkaProducer替代. HelloWorldProducer.java package cn.ljh.kafka.ka ...
- iPhone调用ffmpeg2.0.2解码h264视频的示例代码
iPhone调用ffmpeg2.0.2解码h264视频的示例代码 h264demo.zip 关于怎么在MAC下编译iOS下的ffmpeg请看 编译最新ffmpeg2.0.1(ffmpeg2.0.2)到 ...
- kafka 官方示例代码--消费者
kafka 0.9.0添加了一套新的Java 消费者API,用以替换之前的high-level API (基于ZK) 和low-level API.新的Java消费者API目前为测试版.另外kafka ...
随机推荐
- 编码原则 之 Stable Dependencies
The Stable Dependencies Principle states that “The dependencies between software packages should be ...
- HTTP之gRPC
gRPC 官方文档 gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计. gRPC 基于 HTTP/2 标准设计,带来诸如双向流.流控.头部压缩.单 TCP 连接上的多 ...
- SpringBoot后台接收前台的字符串数据
需求 将前台传入的字符串数据转为int类型. 操作 在pom.xml中添加引用. <dependency> <groupId>org.apache.commons</gr ...
- golang Mysql -- Tx
Transaction 事务 事务处理是数据的重要特性.尤其是对于一些支付系统,事务保证性对业务逻辑会有重要影响.golang的mysql驱动也封装好了事务相关的操作.我们已经学习了db的Query和 ...
- Windows 后台执行jar
我们都知道Linux下可用命令nohup /opt/jdk1.8.0_131/bin/java -jar xxx.jar &来后台执行jar 如果是Windows环境,要如何在后台执行呢 新建 ...
- CSS布局(圣杯、双飞翼、flex)
圣杯布局(float + 负margin + padding + position) <!DOCTYPE html> <html> <head> <meta ...
- MATLAB常用函数(不定时更新)
1.pause 一般情况下pause(a)表示程序暂停a秒后继续执行,但有时候也存在这种情况,程序中只有pause:并没有参数a,这样的意思是程序暂停,按任意键程序继续执行.2.uiwait(h,ti ...
- webstrom
1.webstrom如何在左边显示多个工程 File-> Settings -> Directories -> Add Content Root,选择你要加入的Project 点击O ...
- Web API学习——Web API 强势入门指南
Web API是一个比较宽泛的概念.这里我们提到Web API特指ASP.NET Web API. 这篇文章中我们主要介绍Web API的主要功能以及与其他同类型框架的对比,最后通过一些相对复杂的实例 ...
- 【IDEA填坑】springboot整合ssm框架
遇到俩问题:一个是mybatis生疏 在EmpMapper.xml中定义resultMap <resultMap id="EmpWithDept" type="c ...