package cn.itcast.mock;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 点击流日志模拟器
*/
public class ClickLogGenerator {
public static void main(String[] args) throws InterruptedException {
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "node1:9092");
props.put("acks", "all");
props.put("retries", 2);
props.put("retries.backoff.ms", 20);
props.put("buffer.memory", 33554432);
props.put("batch.size", 16384);
props.put("linger.ms", 25);
props.put("max.request.size", 163840);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> kafkaProducer = new KafkaProducer<>(props);
Random random = new Random();
for (int i = 0; i < 100; i++) {
//构建log
ClickLog clickLog = new ClickLog();
clickLog.setChannelID(channelID[random.nextInt(channelID.length)]);
clickLog.setCategoryID(categoryID[random.nextInt(categoryID.length)]);
clickLog.setProduceID(produceID[random.nextInt(produceID.length)]);
clickLog.setUserID(userID[random.nextInt(userID.length)]);
clickLog.setCountry(contrys[random.nextInt(contrys.length)]);
clickLog.setProvince(provinces[random.nextInt(provinces.length)]);
clickLog.setCity(citys[random.nextInt(citys.length)]);
clickLog.setNetwork(networks[random.nextInt(networks.length)]);
clickLog.setSource(sources[random.nextInt(sources.length)]);
clickLog.setBrowserType(browser[random.nextInt(browser.length)]);
Long[] times = usetimelog.get(random.nextInt(usetimelog.size()));
clickLog.setEntryTime(times[0]);
clickLog.setLeaveTime(times[1]);
String logJson = JSONObject.toJSONString(clickLog);
//构建msg
Message msg = new Message();//构建Message
msg.setMessage(logJson);
msg.setCount(1);
msg.setTimeStamp(System.currentTimeMillis());
String msgJson = JSON.toJSONString(msg);
//发送数据
ProducerRecord<String, String> record = new ProducerRecord<>("pyg", msgJson);
kafkaProducer.send(record);
System.out.println("消息已发送到Kafka:"+msgJson);
Thread.sleep(500);
}
kafkaProducer.close();
}
private static Long[] channelID = new Long[]{1l,2l,3l,4l,5l,6l,7l,8l,9l,10l,11l,12l,13l,14l,15l,16l,17l,18l,19l,20l};//频道id集合
private static Long[] categoryID = new Long[]{1l,2l,3l,4l,5l,6l,7l,8l,9l,10l,11l,12l,13l,14l,15l,16l,17l,18l,19l,20l};//产品类别id集合
private static Long[] produceID = new Long[]{1l,2l,3l,4l,5l,6l,7l,8l,9l,10l,11l,12l,13l,14l,15l,16l,17l,18l,19l,20l};//产品id集合
private static Long[] userID = new Long[]{1l,2l,3l,4l,5l,6l,7l,8l,9l,10l,11l,12l,13l,14l,15l,16l,17l,18l,19l,20l};//用户id集合
/**
* 地区
*/
private static String[] contrys = new String[]{"china"};//地区-国家集合
private static String[] provinces = new String[]{"HeNan","HeBei"};//地区-省集合
private static String[] citys = new String[]{"ShiJiaZhuang","ZhengZhou", "LuoYang"};//地区-市集合
/**
*网络方式
*/
private static String[] networks = new String[]{"电信","移动","联通"};
/**
* 来源方式
*/
private static String[] sources = new String[]{"直接输入","百度跳转","360搜索跳转","必应跳转"};
/**
* 浏览器
*/
private static String[] browser = new String[]{"火狐","qq浏览器","360浏览器","谷歌浏览器"};
/**
* 打开时间 离开时间
*/
private static List<Long[]> usetimelog = producetimes();
//获取时间
public static List<Long[]> producetimes(){
List<Long[]> usetimelog = new ArrayList<Long[]>();
for(int i=0;i<100;i++){
Long [] timesarray = gettimes("2020-01-01 24:60:60:000");
usetimelog.add(timesarray);
}
return usetimelog;
}
private static Long [] gettimes(String time){
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS");
try {
Date date = dateFormat.parse(time);
long timetemp = date.getTime();
Random random = new Random();
int randomint = random.nextInt(10);
long starttime = timetemp - randomint*3600*1000;
long endtime = starttime + randomint*3600*1000;
return new Long[]{starttime,endtime};
} catch (ParseException e) {
e.printStackTrace();
}
return new Long[]{0L,0L};
}
@Data
public static class Message {
// 消息次数
private int count;
// 消息的时间戳
private long timeStamp;
// 消息体
private String message;
}
/**
* 点击流日志
*/
@Data
public static class ClickLog {
//频道ID
private long channelID ;
//产品的类别ID
private long categoryID ;
//产品ID
private long produceID ;
//用户的ID
private long userID ;
//国家
private String country ;
//省份
private String province ;
//城市
private String city ;
//网络方式
private String network ;
//来源方式
private String source ;
//浏览器类型
private String browserType;
//进入网站时间
private Long entryTime ;
//离开网站时间
private long leaveTime ;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
flink学习demo代码库 (214个子文件)
ClickLogGenerator.java 6KB
wps3.jpg 177KB
wps4.jpg 108KB
wps2.jpg 85KB
wps10.jpg 59KB
wps8.jpg 59KB
wps5.jpg 57KB
wps9.jpg 56KB
wps2.jpg 54KB
wps6.jpg 49KB
wps7.jpg 49KB
wps1.jpg 35KB
wps1.jpg 32KB
temp.json 387B
Flink-day01.md 71KB
Flink-day06.md 59KB
Flink-day07.md 41KB
Flink-day02.md 41KB
Flink-day04.md 39KB
Flink-day03.md 38KB
Flink-day05.md 36KB
1611020137327.png 820KB
1611038127092.png 471KB
1610614330143.png 432KB
1611307685689.png 396KB
1610871611731.png 379KB
1610847009297.png 349KB
1610611714750.png 332KB
1610595079819.png 332KB
1610587279113.png 328KB
1610676582127.png 327KB
1610675396439.png 320KB
1611307379552.png 319KB
1611278704840.png 315KB
1611199705674.png 307KB
1610870096923.png 306KB
1610933897175.png 301KB
1611305160354.png 298KB
1610847520514.png 294KB
1610941510468.png 293KB
1610676448033.png 288KB
1611307412726.png 270KB
1610871116774.png 267KB
1611199209413.png 267KB
1611027383287.png 261KB
1610871016671.png 258KB
1610612312780.png 255KB
1611198933641.png 245KB
1610851551483.png 240KB
1610613488317.png 239KB
1610871484540.png 236KB
1611200025762.png 230KB
1611200542581.png 227KB
1611307456233.png 225KB
1611302852482.png 218KB
1610868292893.png 211KB
1611192824612.png 207KB
1610935904023.png 206KB
1611221026742.png 205KB
1611200485317.png 203KB
1611043689270.png 202KB
1610847613561.png 200KB
1611216945865.png 198KB
1610612647155.png 197KB
1611043930242.png 197KB
1611043936301.png 197KB
1611283732209.png 195KB
1610847643454.png 194KB
1611199801098.png 192KB
1611198761371.png 189KB
1610952155121.png 186KB
1611199455308.png 184KB
1610935708886.png 183KB
1611050089338.png 181KB
1610952342240.png 180KB
1610591841303.png 179KB
1610587249773.png 174KB
1611199912038.png 171KB
1610935783481.png 171KB
1610871292360.png 168KB
1610675577604.png 167KB
1610613324538.png 165KB
1611302964317.png 164KB
1610611971022.png 161KB
1610611974052.png 161KB
1611308818568.png 156KB
1610694218932.png 155KB
1610851718721.png 149KB
1610592128486.png 147KB
1611192917230.png 141KB
1610854253775.png 139KB
1610590380973.png 137KB
1611192972559.png 137KB
1611193263423.png 135KB
1610953436360.png 133KB
1610588418761.png 130KB
1610592015551.png 128KB
1610587267864.png 125KB
1611193034303.png 124KB
1610847236983.png 121KB
共 214 条
- 1
- 2
- 3
自然╰→而然
- 粉丝: 2
- 资源: 32
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0