该文档演示了fink windows的操作DEMO
环境准备:
测试数据
自动向kafka推送数据
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONObject;
import com.wfg.flink.example.dto.KafkaPvDto;
import com.wfg.flink.example.utils.RandomGeneratorUtils;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.time.LocalDateTime;
import java.util.Properties;
import java.util.Random;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import static com.wfg.flink.example.constants.Constants.KAFKA_BROKERS;
import static com.wfg.flink.example.constants.Constants.TOPIC_NAME;
public class KafkaTestProducer {
public static void main(String[] args) {
Properties props = new Properties();
props.put("bootstrap.servers", KAFKA_BROKERS);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
try (Producer<String, String> producer = new KafkaProducer<>(props)) {
int times = 100000;
for (int i = 0; i < times; i++) {
System.out.println("Send No. :" + i);
CompletableFuture.allOf(
CompletableFuture.runAsync(() -> sendKafkaMsg(producer)),
CompletableFuture.runAsync(() -> sendKafkaMsg(producer)),
CompletableFuture.runAsync(() -> sendKafkaMsg(producer)),
CompletableFuture.runAsync(() -> sendKafkaMsg(producer)),
CompletableFuture.runAsync(() -> sendKafkaMsg(producer)),
CompletableFuture.runAsync(() -> sendKafkaMsg(producer)),
CompletableFuture.runAsync(() -> sendKafkaMsg(producer)),
CompletableFuture.runAsync(() -> sendKafkaMsg(producer)),
CompletableFuture.runAsync(() -> sendKafkaMsg(producer))
).join();
producer.flush();
Random random = new Random();
int randomNumber = random.nextInt(7); // 生成一个0到6的随机数
Thread.sleep(1000 * randomNumber);
}
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
private static void sendKafkaMsg(Producer<String, String> producer) {
String msg = createMsg