用idea编写代码作为生产者,Kafka接收其【持续】发来的广告日志信息【小案例】(二)
接我们上一篇使用idea编写代码作为生产者,Kafka接收其发来的信息【小案例】(一)
https://georgedage.blog.csdn.net/article/details/103503400
上篇直接生产一个字符串,进行消费。
这一篇做一个改进,对字符串进行高级化。比如,时间戳+用户ip+广告ip+省+市
代码如下:
package com.kafkaimport java.util.Propertiesimport org.apache.kafka.clients.producer.{KafkaProducer, ProducerRecord}import scala.collection.mutable.Map
import scala.util.Randomobject KafkaDemo {def main(args: Array[String]): Unit = {val props = new Properties()props.setProperty("bootstrap.servers","henu2:9092")props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer")val provinces = List[String]("henan","beijing","guangzhou","hebei")val cities = Map[String,List[String]]()cities.put("henan",List[String]("kaifeng","zhengzhou"))cities.put("beijing",List[String]("daxing","haidian"))cities.put("guangzhou",List[String]("zhuhai","zhongshan"))cities.put("hebei",List[String]("shijiazhuang","handan"))val random = new Random()val timestamp = System.currentTimeMillis()val userId = random.nextInt(1000)val adId = random.nextInt(50)val proIndex = random.nextInt(4)val privince = provinces(proIndex)val cIndex = random.nextInt(2)val city = cities.getOrElse(privince,List(""))(cIndex)val log = timestamp + " " + userId + " " + adId + " " + privince + " " + cityprintln(log)val kp = new KafkaProducer[String,String](props)kp.send(new ProducerRecord[String,String]("george",log))kp.close()}
}
可以看到输出结果:
那我们希望的是持续产生数据,如何操作,很简单,就是循环,死循环。
代码如下:
package com.kafkaimport java.util.Propertiesimport org.apache.kafka.clients.producer.{KafkaProducer, ProducerRecord}import scala.collection.mutable.Map
import scala.util.Randomobject KafkaDemo {def main(args: Array[String]): Unit = {val props = new Properties()props.setProperty("bootstrap.servers","henu2:9092")props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer")props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer")val kp = new KafkaProducer[String,String](props)val provinces = List[String]("henan", "beijing", "guangzhou", "hebei")val cities = Map[String, List[String]]()cities.put("henan", List[String]("kaifeng", "zhengzhou"))cities.put("beijing", List[String]("daxing", "haidian"))cities.put("guangzhou", List[String]("zhuhai", "zhongshan"))cities.put("hebei", List[String]("shijiazhuang", "handan"))val random = new Random()while (true) {val timestamp = System.currentTimeMillis()val userId = random.nextInt(1000)val adId = random.nextInt(50)val proIndex = random.nextInt(4)val privince = provinces(proIndex)val cIndex = random.nextInt(2)val city = cities.getOrElse(privince, List(""))(cIndex)val log = timestamp + " " + userId + " " + adId + " " + privince + " " + citykp.send(new ProducerRecord[String,String]("george",log))}}
}
代码并不繁杂,都是些我们常用的基本语法。
结果如下:
如果觉得速度太快,可以在循环结尾加上线程休眠
Thread.sleep(1000)
用idea编写代码作为生产者,Kafka接收其【持续】发来的广告日志信息【小案例】(二)相关推荐
- 使用idea编写代码作为生产者,Kafka接收其发来的信息【小案例】(一)
对于这个小案例,简单来个图示, 友情补充pom <dependencies><dependency><groupId>org.apache.spark</gr ...
- 创建bean的JAVA源文件_创建 JavaBean要经过编写代码、编译源文件、配置JavaBean这样一个过程。_学小易找答案...
[多选题]网络广告效果测定指标包括(). [单选题]"文皆是从道中流出"是谁的观点() [填空题]创建 JavaBean的过程和编写Java类的过程基本相似,可以在任何Java的编 ...
- 使用idea编写消费者,接收生产者的持续日志输出【小案例】(三)
在 用idea编写代码作为生产者,Kafka接收其[持续]发来的广告日志信息[小案例](二) https://georgedage.blog.csdn.net/article/details/10 ...
- java生产者消费者代码_Java实现Kafka生产者消费者代码实例
Kafka的结构与RabbitMQ类似,消息生产者向Kafka服务器发送消息,Kafka接收消息后,再投递给消费者. 生产者的消费会被发送到Topic中,Topic中保存着各类数据,每一条数据都使用键 ...
- 使用idea编写SparkStreaming消费kafka中的数据,并对数据进行某一指标的处理【小案例】(五)
接 使用idea编写SparkStreaming消费kafka中的数据[小案例](四) https://georgedage.blog.csdn.net/article/details/1035 ...
- 使用idea编写SparkStreaming消费kafka中的数据【小案例】(四)
继续接 使用idea编写消费者,接收生产者的持续日志输出[小案例](三) https://georgedage.blog.csdn.net/article/details/103506165 ...
- 编写一个静态方法lg(),接收一个整型参数N,返回不大于log2N(以2为底)的最大整数。不要使用Math库。
题目: 编写一个静态方法lg(),接收一个整型参数N,返回不大于log2N的最大整数.不要使用Math库. 代码: public class Node {public static void main ...
- 使用java数据结构编写代码
使用java数据结构编写代码 数组数据结构 数组的初始化 public static void main(String[] args) {int[] arrays = new int[5]; // 定 ...
- python中如何编写代码输入多个数据并把它们放在一个列表中去_编写高质量Python代码的59个有效方法,你用过几个...
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...
最新文章
- C++派生类与基类构造函数调用次序
- 祁阳一中2021年高考成绩查询,祁阳一中2019高考成绩喜报、一本二本上线人数情况...
- Jtest 使用教程之代码标准违例修正与标准规则说明书访问
- JS基础语法(03)-前自增与后自增区别
- H3C 三种生成树协议特性的比较
- C#多线程之线程池篇2
- Entity Framework 笔记(一)
- pb9 调用系统语音_语音通知解决方案,VIKI语音通知软件介绍
- 从开发到发布一款基于Vue2x的图片预览插件
- Fiddler2 http抓包和https抓包
- 恩智浦智能车赛。摄像头处理函数。
- CSS3 3D旋转魔方
- JS 之 图片编辑器插件
- ViewData与ViewBag的区别与联系
- 全栈开发-IDE介绍与设置、字符串格式化、数据类型、for循环
- Objective-C 属性
- 特斯拉服务器位置,特斯拉云服务器
- STM32寻迹智能车
- Unity3D之如何将包大小减少到极致
- 什么是研发效能?为什么要关注研发效能