初始化
commit
de61c36f72
|
@ -0,0 +1,39 @@
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
/.idea
|
||||||
|
.idea/modules.xml
|
||||||
|
.idea/jarRepositories.xml
|
||||||
|
.idea/compiler.xml
|
||||||
|
.idea/libraries/
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Mac OS ###
|
||||||
|
.DS_Store
|
|
@ -0,0 +1,102 @@
|
||||||
|
version: "3.6"
|
||||||
|
services:
|
||||||
|
kafka1:
|
||||||
|
container_name: kafka1
|
||||||
|
image: 'bitnami/kafka:3.3.1'
|
||||||
|
user: root
|
||||||
|
ports:
|
||||||
|
- '19092:9092'
|
||||||
|
- '19093:9093'
|
||||||
|
environment:
|
||||||
|
# ID
|
||||||
|
- KAFKA_BROKER_ID=1
|
||||||
|
# 定义安全协议
|
||||||
|
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
|
||||||
|
# 定义外网访问地址(宿主机ip地址和端口)
|
||||||
|
- KAFKA_CFG_LISTENERS=PLAINTEXT://kafka1:9092
|
||||||
|
# 定义外网访问地址(宿主机ip地址和端口)
|
||||||
|
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://39.100.65.135:19092
|
||||||
|
# 允许使用PLAINTEXT侦听器
|
||||||
|
- ALLOW_PLAINTEXT_LISTENER=yes
|
||||||
|
# 设置broker最大内存,和初始内存
|
||||||
|
- KAFKA_HEAP_OPTS=-Xmx512M -Xms256M
|
||||||
|
# 设置东八区时区
|
||||||
|
- TZ="Asia/Shanghai"
|
||||||
|
# 需要吧zook使用extra_hosts注入进来
|
||||||
|
- KAFKA_ZOOKEEPER_CONNECT=10.103.100.1:2181,10.103.100.1:2182,10.103.100.1:2183
|
||||||
|
# 三个节点保持一致
|
||||||
|
- KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI
|
||||||
|
volumes:
|
||||||
|
- /usr/local/docker/kafka/data/broker01:/bitnami/kafka:rw
|
||||||
|
networks:
|
||||||
|
- kafka-net
|
||||||
|
kafka2:
|
||||||
|
container_name: kafka2
|
||||||
|
image: 'bitnami/kafka:3.3.1'
|
||||||
|
user: root
|
||||||
|
ports:
|
||||||
|
- '29092:9092'
|
||||||
|
- '29093:9093'
|
||||||
|
environment:
|
||||||
|
# ID
|
||||||
|
- KAFKA_BROKER_ID=2
|
||||||
|
# 定义安全协议
|
||||||
|
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
|
||||||
|
# 定义外网访问地址(宿主机ip地址和端口)
|
||||||
|
- KAFKA_CFG_LISTENERS=PLAINTEXT://kafka2:9092
|
||||||
|
# 定义外网访问地址(宿主机ip地址和端口)
|
||||||
|
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://39.100.65.135:29092
|
||||||
|
# 允许使用PLAINTEXT侦听器
|
||||||
|
- ALLOW_PLAINTEXT_LISTENER=yes
|
||||||
|
# 设置broker最大内存,和初始内存
|
||||||
|
- KAFKA_HEAP_OPTS=-Xmx512M -Xms256M
|
||||||
|
# 设置东八区时区
|
||||||
|
- TZ="Asia/Shanghai"
|
||||||
|
# 需要吧zook使用extra_hosts注入进来
|
||||||
|
- KAFKA_ZOOKEEPER_CONNECT=10.103.100.1:2181,10.103.100.1:2182,10.103.100.1:2183
|
||||||
|
# 三个节点保持一致
|
||||||
|
- KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI
|
||||||
|
volumes:
|
||||||
|
- /usr/local/docker/kafka/data/broker02:/bitnami/kafka:rw
|
||||||
|
networks:
|
||||||
|
- kafka-net
|
||||||
|
kafka3:
|
||||||
|
container_name: kafka3
|
||||||
|
image: 'bitnami/kafka:3.3.1'
|
||||||
|
user: root
|
||||||
|
ports:
|
||||||
|
- '39092:9092'
|
||||||
|
- '39093:9093'
|
||||||
|
environment:
|
||||||
|
# ID
|
||||||
|
- KAFKA_BROKER_ID=3
|
||||||
|
# 定义安全协议
|
||||||
|
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
|
||||||
|
# 定义外网访问地址(宿主机ip地址和端口)
|
||||||
|
- KAFKA_CFG_LISTENERS=PLAINTEXT://kafka3:9092
|
||||||
|
# 定义外网访问地址(宿主机ip地址和端口)
|
||||||
|
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://39.100.65.135:39092
|
||||||
|
# 允许使用PLAINTEXT侦听器
|
||||||
|
- ALLOW_PLAINTEXT_LISTENER=yes
|
||||||
|
# 设置broker最大内存,和初始内存
|
||||||
|
- KAFKA_HEAP_OPTS=-Xmx512M -Xms256M
|
||||||
|
# 设置东八区时区
|
||||||
|
- TZ="Asia/Shanghai"
|
||||||
|
# 需要吧zook使用extra_hosts注入进来
|
||||||
|
- KAFKA_ZOOKEEPER_CONNECT=10.103.100.1:2181,10.103.100.1:2182,10.103.100.1:2183
|
||||||
|
# 三个节点保持一致
|
||||||
|
- KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI
|
||||||
|
volumes:
|
||||||
|
- /usr/local/docker/kafka/data/broker03:/bitnami/kafka:rw
|
||||||
|
networks:
|
||||||
|
- kafka-net
|
||||||
|
networks:
|
||||||
|
name:
|
||||||
|
kafka-net:
|
||||||
|
driver: bridge
|
||||||
|
name: kafka-net
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: 10.100.2.0/24
|
||||||
|
gateway: 10.100.2.1
|
|
@ -0,0 +1,105 @@
|
||||||
|
version: "3.6"
|
||||||
|
services:
|
||||||
|
knowstreaming-manager:
|
||||||
|
image: knowstreaming/knowstreaming-manager:latest
|
||||||
|
container_name: knowstreaming-manager
|
||||||
|
privileged: true
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- elasticsearch-single
|
||||||
|
- knowstreaming-mysql
|
||||||
|
expose:
|
||||||
|
- 80
|
||||||
|
networks:
|
||||||
|
- knowStreaming-net
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- /ks-start.sh
|
||||||
|
environment:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
# mysql服务地址
|
||||||
|
SERVER_MYSQL_ADDRESS: knowstreaming-mysql:3306
|
||||||
|
# mysql数据库名
|
||||||
|
SERVER_MYSQL_DB: know_streaming
|
||||||
|
# mysql用户名
|
||||||
|
SERVER_MYSQL_USER: root
|
||||||
|
# mysql用户密码
|
||||||
|
SERVER_MYSQL_PASSWORD: root
|
||||||
|
# es服务地址
|
||||||
|
SERVER_ES_ADDRESS: elasticsearch-single:9200
|
||||||
|
# 服务JVM参数
|
||||||
|
JAVA_OPTS: -Xmx2g -Xms1g
|
||||||
|
# 服务日志路径
|
||||||
|
volumes:
|
||||||
|
- /usr/local/docker/know-streaming/data/manage/log:/logs
|
||||||
|
knowstreaming-ui:
|
||||||
|
image: knowstreaming/knowstreaming-ui:latest
|
||||||
|
container_name: knowstreaming-ui
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- '80:80'
|
||||||
|
networks:
|
||||||
|
- knowStreaming-net
|
||||||
|
environment:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
depends_on:
|
||||||
|
- knowstreaming-manager
|
||||||
|
elasticsearch-single:
|
||||||
|
image: elasticsearch:7.6.2
|
||||||
|
container_name: elasticsearch-single
|
||||||
|
restart: always
|
||||||
|
expose:
|
||||||
|
- 9200
|
||||||
|
- 9300
|
||||||
|
networks:
|
||||||
|
- knowStreaming-net
|
||||||
|
environment:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
# es的JVM参数
|
||||||
|
ES_JAVA_OPTS: -Xms512m -Xmx512m
|
||||||
|
# 单节点配置,多节点集群参考 https://www.elastic.co/guide/en/elasticsearch/reference/7.6/docker.html#docker-compose-file
|
||||||
|
discovery.type: single-node
|
||||||
|
# 数据持久化路径
|
||||||
|
volumes:
|
||||||
|
- /usr/local/docker/know-streaming/data/es/data:/usr/share/elasticsearch/data
|
||||||
|
knowstreaming-init:
|
||||||
|
image: knowstreaming/knowstreaming-manager:latest
|
||||||
|
container_name: knowstreaming-init
|
||||||
|
depends_on:
|
||||||
|
- elasticsearch-single
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- /es_template_create.sh
|
||||||
|
environment:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
# es服务地址
|
||||||
|
SERVER_ES_ADDRESS: elasticsearch-single:9200
|
||||||
|
knowstreaming-mysql:
|
||||||
|
image: knowstreaming/knowstreaming-mysql:latest
|
||||||
|
container_name: knowstreaming-mysql
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
# root 用户密码
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
# 初始化时创建的数据库名称
|
||||||
|
MYSQL_DATABASE: know_streaming
|
||||||
|
# 通配所有host,可以访问远程
|
||||||
|
MYSQL_ROOT_HOST: '%'
|
||||||
|
expose:
|
||||||
|
- 3306
|
||||||
|
networks:
|
||||||
|
- knowStreaming-net
|
||||||
|
# 数据持久化路径
|
||||||
|
volumes:
|
||||||
|
- /usr/local/docker/know-streaming/data/mysql/data:/data/mysql
|
||||||
|
networks:
|
||||||
|
name:
|
||||||
|
knowStreaming-net:
|
||||||
|
driver: bridge
|
||||||
|
name: knowStreaming-net
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: 10.100.3.0/24
|
||||||
|
gateway: 10.100.3.1
|
|
@ -0,0 +1,77 @@
|
||||||
|
version: '3.6'
|
||||||
|
|
||||||
|
services:
|
||||||
|
zook1:
|
||||||
|
image: zookeeper:latest
|
||||||
|
restart: always
|
||||||
|
hostname: zook1
|
||||||
|
#容器名称,方便在rancher中显示有意义的名称
|
||||||
|
container_name: zook1
|
||||||
|
#将本容器的zookeeper默认端口号映射出去
|
||||||
|
ports:
|
||||||
|
- 2181:2181
|
||||||
|
# 挂载数据卷
|
||||||
|
volumes:
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook1/data:/data"
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook1/datalog:/datalog"
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook1/logs:/logs"
|
||||||
|
environment:
|
||||||
|
#即是zookeeper的节点值,也是kafka的brokerid值
|
||||||
|
ZOO_MY_ID: 1
|
||||||
|
ZOO_SERVERS: server.1=zook1:2888:3888;2181 server.2=zook2:2888:3888;2181 server.3=zook3:2888:3888;2181
|
||||||
|
networks:
|
||||||
|
zookeeper-net:
|
||||||
|
ipv4_address: 10.100.1.2
|
||||||
|
|
||||||
|
zook2:
|
||||||
|
image: zookeeper:latest
|
||||||
|
restart: always
|
||||||
|
hostname: zook2
|
||||||
|
#容器名称,方便在rancher中显示有意义的名称
|
||||||
|
container_name: zook2
|
||||||
|
#将本容器的zookeeper默认端口号映射出去
|
||||||
|
ports:
|
||||||
|
- 2182:2181
|
||||||
|
#将本容器的zookeeper默认端口号映射出去
|
||||||
|
volumes:
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook2/data:/data"
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook2/datalog:/datalog"
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook2/logs:/logs"
|
||||||
|
environment:
|
||||||
|
#即是zookeeper的节点值,也是kafka的brokerid值
|
||||||
|
ZOO_MY_ID: 2
|
||||||
|
ZOO_SERVERS: server.1=zook1:2888:3888;2181 server.2=zook2:2888:3888;2181 server.3=zook3:2888:3888;2181
|
||||||
|
networks:
|
||||||
|
zookeeper-net:
|
||||||
|
ipv4_address: 10.100.1.3
|
||||||
|
|
||||||
|
zook3:
|
||||||
|
image: zookeeper:latest
|
||||||
|
restart: always
|
||||||
|
hostname: zook3
|
||||||
|
#容器名称,方便在rancher中显示有意义的名称
|
||||||
|
container_name: zook3
|
||||||
|
#将本容器的zookeeper默认端口号映射出去
|
||||||
|
ports:
|
||||||
|
- 2183:2181
|
||||||
|
volumes:
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook3/data:/data"
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook3/datalog:/datalog"
|
||||||
|
- "/usr/local/docker/zookeeper/data/zook3/logs:/logs"
|
||||||
|
environment:
|
||||||
|
#即是zookeeper的节点值,也是kafka的brokerid值
|
||||||
|
ZOO_MY_ID: 3
|
||||||
|
ZOO_SERVERS: server.1=zook1:2888:3888;2181 server.2=zook2:2888:3888;2181 server.3=zook3:2888:3888;2181
|
||||||
|
networks:
|
||||||
|
zookeeper-net:
|
||||||
|
ipv4_address: 10.100.1.4
|
||||||
|
networks:
|
||||||
|
name:
|
||||||
|
zookeeper-net:
|
||||||
|
driver: bridge
|
||||||
|
name: zookeeper-net
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: 10.100.1.0/24
|
||||||
|
gateway: 10.100.1.1
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.muyu</groupId>
|
||||||
|
<artifactId>kafka</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>17</maven.compiler.source>
|
||||||
|
<maven.compiler.target>17</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>2.7.7</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.kafka</groupId>
|
||||||
|
<artifactId>kafka-clients</artifactId>
|
||||||
|
<version>3.3.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,57 @@
|
||||||
|
package com.muyu.kafka.consumer;
|
||||||
|
|
||||||
|
import org.apache.kafka.clients.consumer.ConsumerRecord;
|
||||||
|
import org.apache.kafka.clients.consumer.ConsumerRecords;
|
||||||
|
import org.apache.kafka.clients.consumer.KafkaConsumer;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import static com.muyu.kafka.contents.KafkaContent.KAFKA_CON;
|
||||||
|
import static com.muyu.kafka.contents.KafkaContent.TOPIC;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 消费者测试类
|
||||||
|
* @Date 2023/8/25 18:52
|
||||||
|
*/
|
||||||
|
public class ConsumerTest {
|
||||||
|
private static KafkaConsumer<String, String> consumer;
|
||||||
|
|
||||||
|
private static void KfkConsumer() {
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.put("bootstrap.servers", KAFKA_CON);
|
||||||
|
props.put("group.id", "group01");
|
||||||
|
props.put("enable.auto.commit", "true");
|
||||||
|
props.put("auto.commit.interval.ms", "1000");
|
||||||
|
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
|
||||||
|
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
|
||||||
|
consumer = new KafkaConsumer<>(props);
|
||||||
|
consumer.subscribe(List.of(TOPIC));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void close() {
|
||||||
|
consumer.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<List<Object>> poll(int num) {
|
||||||
|
List<List<Object>> result = new ArrayList<>();
|
||||||
|
while (result.size() < num) {
|
||||||
|
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
|
||||||
|
for (ConsumerRecord<String, String> record : records) {
|
||||||
|
result.add(Arrays.asList(record.offset(), record.key(), record.value()));
|
||||||
|
System.out.println(record.offset() +" - "+ record.key() +" - "+ record.value());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main (String[] args) {
|
||||||
|
KfkConsumer();
|
||||||
|
poll(100);
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.muyu.kafka.contents;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: kafka常量类
|
||||||
|
* @Date 2023/8/25 18:47
|
||||||
|
*/
|
||||||
|
public class KafkaContent {
|
||||||
|
|
||||||
|
public static final String TOPIC = "top";
|
||||||
|
|
||||||
|
public static final String KAFKA_CON = "39.100.65.135:39092,39.100.65.135:29092,39.100.65.135:19092";
|
||||||
|
}
|
|
@ -0,0 +1,68 @@
|
||||||
|
package com.muyu.kafka.producer;
|
||||||
|
|
||||||
|
import org.apache.kafka.clients.producer.KafkaProducer;
|
||||||
|
import org.apache.kafka.clients.producer.Producer;
|
||||||
|
import org.apache.kafka.clients.producer.ProducerRecord;
|
||||||
|
import org.apache.kafka.clients.producer.RecordMetadata;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
import static com.muyu.kafka.contents.KafkaContent.KAFKA_CON;
|
||||||
|
import static com.muyu.kafka.contents.KafkaContent.TOPIC;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author DongZl
|
||||||
|
* @description: 生产者测试
|
||||||
|
* @Date 2023/8/25 18:50
|
||||||
|
*/
|
||||||
|
public class ProducerTest {
|
||||||
|
private static Producer<String, String> producer;
|
||||||
|
|
||||||
|
public static void KfkProducer() {
|
||||||
|
Properties props = new Properties();
|
||||||
|
props.put("bootstrap.servers", KAFKA_CON);
|
||||||
|
// props.put("linger.ms", 1);
|
||||||
|
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
|
||||||
|
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
|
||||||
|
producer = new KafkaProducer<>(props);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void close() {
|
||||||
|
producer.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static RecordMetadata send(String topic, String key, String value) {
|
||||||
|
Future<RecordMetadata> result = producer.send(new ProducerRecord<>(topic, key, value));
|
||||||
|
RecordMetadata meta = null;
|
||||||
|
try {
|
||||||
|
meta = result.get();
|
||||||
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return meta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main (String[] args) {
|
||||||
|
KfkProducer();
|
||||||
|
|
||||||
|
new Thread(() -> {
|
||||||
|
int i = 0;
|
||||||
|
do {
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||||
|
send(TOPIC, UUID.randomUUID().toString(), format);
|
||||||
|
}while (i++ < 1000);
|
||||||
|
close();
|
||||||
|
}).start();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue