-
spring-kafka:1.3.8.RELEASE
-
Flink:1.7
在机器192.168.1.101上部署三个容器(消息生产者、zookeeper、kafka)
构建kafka相关的环境不是本文重点,因此这里利用docker快速实现,步骤如下:
-
在机器192.168.1.101上安装docker和docker-compose;
-
创建docker-compose.yml文件,内容如下:
version: ‘2’
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- “2181:2181”
kafka1:
image: wurstmeister/kafka:2.11-0.11.0.3
ports:
- “9092:9092”
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092
KAFKA_LISTENERS: PLAINTEXT://:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: “topic001:2:1”
volumes:
- /var/run/docker.sock:/var/run/docker.sock
producer:
image: bolingcavalry/kafka01103producer:0.0.1-SNAPSHOT
ports:
- “8080:8080”
- 在docker-compose.yml所在目录执行命令docker-compose up -d,即可启动容器;
如果您想了解更多docker环境下kafka消息生产者的细节,请参考《如何使用Docker内的kafka服务》;
在机器192.168.1.104上安装Apache Bench
不同的操作系统安装Apache Bench的命令也不一样:
-
ubuntu上的安装命令apt-get install apache2-utils;
-
centos上的安装命令yum install httpd-tools;
源码下载
接下来的实战是编写Flink应用的源码,您可以选择直接从GitHub下载这个工程的源码,地址和链接信息如下表所示:
| 名称 | 链接 | 备注 |
| :-- | :-- | :-- |
| 项目主页 | https://github.com/zq2599/blog_demos | 该项目在GitHub上的主页 |
| git仓库地址(https) | https://github.com/zq2599/blog_demos.git | 该项目源码的仓库地址,https协议 |
| git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
这个git项目中有多个文件夹,本章源码在flinkkafkademo这个文件夹下,如下图红框所示:
开发Flink应用,部署到机器192.168.1.102
-
Flink环境搭建请参考《Flink1.7从安装到体验》;
-
应用基本代码是通过mvn命令创建的,在命令行输入以下命令:
mvn archetype:generate -DarchetypeGroupId=org.apache.flink -DarchetypeArtifactId=flink-quickstart-java -DarchetypeVersion=1.7.0
根据提示,输入groupId为com.bolingcavalry,artifactId为flinkkafkademo,其他的直接按下回车键即可使用默认值,这样就得到了一个maven工程:flinkkafkademo;
3. 打开工程的pom.xml文件,增加以下两个依赖:
org.apache.flink
flink-connector-kafka-0.11_2.12
${flink.version}
com.alibaba
fastjson
1.2.28
- 新增一个辅助类,用于将kafka消息中的内容转换成java对象:
/**
-
@Description: 解析原始消息的辅助类
-
@author: willzhao E-mail: zq2599@gmail.com
-
@date: 2019/1/1 20:13
*/
public class JSONHelper {
/**
-
解析消息,得到时间字段
-
@param raw
-
@return
*/
public static long getTimeLongFromRawMessage(String raw){
SingleMessage singleMessage = parse(raw);
return null==singleMessage ? 0L : singleMessage.getTimeLong();
}
/**
-
将消息解析成对象
-
@param raw
-
@return
*/
public static SingleMessage parse(String raw){
SingleMessage singleMessage = null;
if (raw != null) {
singleMessage = JSONObject.parseObject(raw, SingleMessage.class);
}
return singleMessage;
}
}
- SingleMessage对象的定义:
public class SingleMessage {
private long timeLong;
private String name;
private String bizID;
private String time;
private String message;
public long getTimeLong() {
return timeLong;
}
public void setTimeLong(long timeLong) {
this.timeLong = timeLong;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBizID() {
return bizID;
}
public void setBizID(String bizID) {
this.bizID = bizID;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
- 实时处理的操作都集中在StreamingJob类,源码的关键位置已经加了注释,就不再赘述了:
/*
-
Licensed to the Apache Software Foundation (ASF) under one
-
or more contributor license agreements. See the NOTICE file
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
最后如何让自己一步步成为技术专家
说句实话,如果一个打工人不想提升自己,那便没有工作的意义,毕竟大家也没有到养老的年龄。
当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。
推荐一份Java架构之路必备的学习笔记,内容相当全面!!!
成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。
你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!
进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!
【关注】+【转发】+【点赞】支持我!创作不易!
家也没有到养老的年龄。
当你的技术在一步步贴近阿里p7水平的时候,毫无疑问你的薪资肯定会涨,同时你能学到更多更深的技术,交结到更厉害的大牛。
推荐一份Java架构之路必备的学习笔记,内容相当全面!!!
[外链图片转存中…(img-4IPsBKsz-1711392602091)]
成年人的世界没有容易二字,前段时间刷抖音看到一个程序员连着加班两星期到半夜2点的视频。在这个行业若想要拿高薪除了提高硬实力别无他法。
你知道吗?现在有的应届生实习薪资都已经赶超开发5年的程序员了,实习薪资26K,30K,你没有紧迫感吗?做了这么多年还不如一个应届生,真的非常尴尬!
进了这个行业就不要把没时间学习当借口,这个行业就是要不断学习,不然就只能被裁员。所以,抓紧时间投资自己,多学点技术,眼前困难,往后轻松!
【关注】+【转发】+【点赞】支持我!创作不易!