作为Apach下一个优秀的开源消息队列框架,Kafka已经成为很多互联网厂商日志采集处理的第一选择。后面在实际应用场景中可能会应用到,因此就先了解了一下。经过两个晚上的努力,总算是能够基本使用。

操作系统:虚拟机Centos 6.5

1、下载Kafka安装文件,首先进入官网,找到最新的稳定版本

      wget http://mirrors.hust.edu.cn/apache/kafka/0.10.2.0/kafka_2.12-0.10.2.0.tgz

2、解压并拷贝到 需要的目录下,我的设定为 /usr/下

先 cp   然后解压 tar -xzvf

3、由于我本机已经安装了zookeeper,因此直接修改server.properties 文件

4、启动服务  bin/kafka-server-start.sh config/server.properties ,问题来了 :

[root@localhost kafka_2.12-0.10.2.0]# Exception in thread "main" java.lang.UnsupportedClassVersionError: kafka/Kafka : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
 
启动报错,看提示,由于使用最新的kafka版本,需要1.8的JDK。而我本机查看目前是1.6。
 
5、更换JDK版本
使用wget下载1.8JDK,vim /etc/profile 更改JAVA_HOME的路径,source /etc/profile 后,执行 java -version 仍然显示为 1.6.
重启依然无效,后网上找到解决办法:
which Java
/usr/bin/java
which javac
/usr/bin/javac
 
1.先将usr/bin目录下的先删除
rm -rf  java
rm -rf  javac
2.先将jdk1.8
ln -s   $JAVA_HOME/bin/java  /usr/bin/java
ln -s   $JAVA_HOME/bin/javac  /usr/bin/javac
 
6、启动服务  bin/kafka-server-start.sh config/server.properties  ,未报错
启动一个生产者 ,topic为test:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
启动两个消费者
bin/kafka-console-consumer.sh --zookeeper 192.168.118.131:3181 --topic test --from-beginning 
bin/kafka-console-consumer.sh --zookeeper 192.168.118.131:3181 --topic test --from-beginning 

两个消费端均能收到服务端的信息。

7、尝试用java代码来接收信息,首先建立一个MAVEN工程,POM.xml文件加入依赖:

<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.8.2.1</version>
</dependency>

<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.8.2.1</version>
</dependency>

然后运行安装代码构建完成。具体调用代码如下

import java.util.List;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import kafka.consumer.Consumer;
import kafka.consumer.ConsumerConfig;
import kafka.consumer.ConsumerIterator;
import kafka.consumer.KafkaStream;
import kafka.consumer.Whitelist;
import kafka.javaapi.consumer.ConsumerConnector;
import kafka.message.MessageAndMetadata;

import org.apache.kafka.common.utils.CollectionUtils;

/**
* File Name:KafkaConsumer.java
* Package_Name:kafkaTest
* date:2017-3-25上午10:00:56
* Author : cao.zhi10
*
*/
public class KafkaConsumer {
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
properties.put("zookeeper.connect", "192.168.118.131:3181");
properties.put("auto.commit.enable", "true");
properties.put("auto.commit.interval.ms", "60000");
properties.put("group.id", "test");

ConsumerConfig consumerConfig = new ConsumerConfig(properties);

ConsumerConnector javaConsumerConnector = Consumer.createJavaConsumerConnector(consumerConfig);

//topic的过滤器
Whitelist whitelist = new Whitelist("test");
List<KafkaStream<byte[], byte[]>> partitions = javaConsumerConnector.createMessageStreamsByFilter(whitelist);

if (partitions==null) {
System.out.println("empty!");
TimeUnit.SECONDS.sleep(1);
}

//消费消息
for (KafkaStream<byte[], byte[]> partition : partitions) {

ConsumerIterator<byte[], byte[]> iterator = partition.iterator();
while (iterator.hasNext()) {
MessageAndMetadata<byte[], byte[]> next = iterator.next();
System.out.println("partiton:" + next.partition());
System.out.println("offset:" + next.offset());
System.out.println("接收到message:" + new String(next.message(), "utf-8"));
}
}
}
}

执行main方法,一直报DISCONNECT异常,仔细分析启动日志发现一直在去尝试调用 localhost:9092 。搜索了下该问题,网上给的解决方案是修改 service.properties 里面的hostname 信息,但是目前最新版本已经取消了该节点,目前必须使用 listeners.

8、重新启动服务,生产者,消费者(注意必须用IP地址启动,否则会报错

bin/kafka-console-producer.sh --broker-list 192.168.118.131:9092 --topic test

 
 
 
 
9、java代码启动后,在生产者crt界面输入可以正常接收信息,但是出现了乱码:

 字符转换方式 GBK,UTF-8 都不行。后来想到原来实时查看服务器端日志也出现乱码的解决方式,于是修改了下 crt会话里面的编码方式,如下

问题得到解决

 
 
 

初识Kafka----------Centos上单机部署、服务启动、JAVA客户端调用的更多相关文章

  1. Primecoin在windows上的部署和启动服务

     Primecoin在windows上的部署和启动服务: 一.从官方获得Primecoin的windows版安装包: 二.一路像安装客户端一样的安装: 三.安装成功后它会自动弹出客户端运行,同步数据, ...

  2. CentOS上安装GitBlit服务

    简单介绍 在上一篇文章中,已经简单的介绍了如何在CentOS的服务器上搭建git服务器.但是这种方式实现的服务器功能比较弱,操作起来也比较繁琐.在网上搜索了一圈,感觉Gitblit比较符合我的需求.接 ...

  3. 本地计算机 上的 OracleOraDb11g_home1TNSListener 服务启动后停止

    今天玩oracle的时候突然遇到一个问题:本地计算机 上的 OracleOraDb11g_home1TNSListener 服务启动后停止.某些服务在未由其他服务或程序使用时将自动停止. 在网上找解决 ...

  4. MySQL 安装和启动服务,“本地计算机 上的 MySQL 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”

    MySQL 安装和启动服务,以及遇到的问题 MySQL版本: mysql-5.7.13-winx64.zip (免安装,解压放到程序文件夹即可,比如 C:\Program Files\mysql-5. ...

  5. (转)解决:本地计算机 上的 OracleOraDb10g_home1TNSListener服务启动后停止

    原文地址:http://justsee.iteye.com/blog/1320059 手动启动一个问题:本地计算机 上的 OracleOraDb10g_home1TNSListener服务启动后停止. ...

  6. 在 CentOS 上安装 vsftp 服务

    在 CentOS 上安装 vsftp 服务 1.查看当前 CentOS 服务器是否已安装了 vsftpd 服务: rpm -q vsftpd 如果打印如下类似的信息则表明已安装 vsftpd 服务: ...

  7. C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

  8. CentOS上手工部署kubernetes集群

    本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...

  9. Kafka记录-Kafka简介与单机部署测试

    1.Kafka简介 kafka-分布式发布-订阅消息系统,开发语言-Scala,协议-仿AMQP,不支持事务,支持集群,支持负载均衡,支持zk动态扩容 2.Kafka的架构组件 1.话题(Topic) ...

随机推荐

  1. 1787: [Ahoi2008]Meet 紧急集合

    1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1482  Solved: 652[Submit][ ...

  2. 【收集】sql查询统计,周,月,年

    昨天 select * from tb where datediff(day, 时间字段 ,getdate()) = 1 今天 select * from tb where datediff(day, ...

  3. NDK 开发实例二(添加 Eigen库)

    上一篇,我已经阐述了如何创建一个简单的NDK实例: NDK 开发实例一(Android.mk环境配置下) 在上一篇的基础上,我们来添加Eigen库,然后做一个简单实例. Eigen是一个高层次的C + ...

  4. ORACLE 12C 基础

    连接到PDB数据库 CMD窗口:sqlplus 用户名/密码@localhost:1521/PDB数据库名    示例:sqlplus xiaozijie/Abc4681101@localhost:1 ...

  5. jsp页面中从forEach里向action里面传递其中的一个对象

    <c:forEach var="user" items="${users }"> <form action="user_update ...

  6. DBProxy 入门到精通系列(二):DBProxy快速入门教程

    这里主要用来了解有关DBProxy方面的部署及基本的配置,以及模拟架构 1 DBProxy方面的安装部署 1)基础环境的部署 # .x86_64 Percona-Server-client-.x86_ ...

  7. ZooKeeper集群-搭建指南

    第一步: 上传安装程序到Linux 这一步很简单就不在这过多说明了! 第二步: 在Linux上使用命令行安装 第三步: 修改配置文件 1.修改zoo.cfg文件 2.修改集群中各台主机的名称 1).如 ...

  8. 【C++】模拟实现auto_ptr

    看了<Effctive C++>,里面提到用对象去管理资源,可以有效防止内存泄漏. 结合auto_ptr特性,稍微思考了一下,实现了一个简单的auto_ptr (因为代码量小,就不分文件了 ...

  9. 搭建 redis 3.2.8服务器

    实验环境 redis 3.2.8 + RHEL 7.3 系统 软件下载地址 http://download.redis.io/releases/redis-3.2.8.tar.gz #注意,我的软件包 ...

  10. Shell第三篇:基本语法

    一 什么是shell script 将OS命令堆积到可执行的文件里,由上至下的顺序执行文本里的OS命令 就是脚本了. 再加上些智能(条件/流控)控制,就变成了智能化脚本了. 二 变量 part1 为何 ...