接我们上一篇使用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接收其【持续】发来的广告日志信息【小案例】(二)相关推荐

  1. 使用idea编写代码作为生产者,Kafka接收其发来的信息【小案例】(一)

    对于这个小案例,简单来个图示, 友情补充pom <dependencies><dependency><groupId>org.apache.spark</gr ...

  2. 创建bean的JAVA源文件_创建 JavaBean要经过编写代码、编译源文件、配置JavaBean这样一个过程。_学小易找答案...

    [多选题]网络广告效果测定指标包括(). [单选题]"文皆是从道中流出"是谁的观点() [填空题]创建 JavaBean的过程和编写Java类的过程基本相似,可以在任何Java的编 ...

  3. 使用idea编写消费者,接收生产者的持续日志输出【小案例】(三)

    在   用idea编写代码作为生产者,Kafka接收其[持续]发来的广告日志信息[小案例](二) https://georgedage.blog.csdn.net/article/details/10 ...

  4. java生产者消费者代码_Java实现Kafka生产者消费者代码实例

    Kafka的结构与RabbitMQ类似,消息生产者向Kafka服务器发送消息,Kafka接收消息后,再投递给消费者. 生产者的消费会被发送到Topic中,Topic中保存着各类数据,每一条数据都使用键 ...

  5. 使用idea编写SparkStreaming消费kafka中的数据,并对数据进行某一指标的处理【小案例】(五)

    接    使用idea编写SparkStreaming消费kafka中的数据[小案例](四) https://georgedage.blog.csdn.net/article/details/1035 ...

  6. 使用idea编写SparkStreaming消费kafka中的数据【小案例】(四)

    继续接     使用idea编写消费者,接收生产者的持续日志输出[小案例](三) https://georgedage.blog.csdn.net/article/details/103506165 ...

  7. 编写一个静态方法lg(),接收一个整型参数N,返回不大于log2N(以2为底)的最大整数。不要使用Math库。

    题目: 编写一个静态方法lg(),接收一个整型参数N,返回不大于log2N的最大整数.不要使用Math库. 代码: public class Node {public static void main ...

  8. 使用java数据结构编写代码

    使用java数据结构编写代码 数组数据结构 数组的初始化 public static void main(String[] args) {int[] arrays = new int[5]; // 定 ...

  9. python中如何编写代码输入多个数据并把它们放在一个列表中去_编写高质量Python代码的59个有效方法,你用过几个...

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...

最新文章

  1. C++派生类与基类构造函数调用次序
  2. 祁阳一中2021年高考成绩查询,祁阳一中2019高考成绩喜报、一本二本上线人数情况...
  3. Jtest 使用教程之代码标准违例修正与标准规则说明书访问
  4. JS基础语法(03)-前自增与后自增区别
  5. H3C 三种生成树协议特性的比较
  6. C#多线程之线程池篇2
  7. Entity Framework 笔记(一)
  8. pb9 调用系统语音_语音通知解决方案,VIKI语音通知软件介绍
  9. 从开发到发布一款基于Vue2x的图片预览插件
  10. Fiddler2 http抓包和https抓包
  11. 恩智浦智能车赛。摄像头处理函数。
  12. CSS3 3D旋转魔方
  13. JS 之 图片编辑器插件
  14. ViewData与ViewBag的区别与联系
  15. 全栈开发-IDE介绍与设置、字符串格式化、数据类型、for循环
  16. Objective-C 属性
  17. 特斯拉服务器位置,特斯拉云服务器
  18. STM32寻迹智能车
  19. Unity3D之如何将包大小减少到极致
  20. 什么是研发效能?为什么要关注研发效能

热门文章

  1. POJ - 3450 Corporate Identity(二分+后缀数组)
  2. python与或非位运算_python位运算
  3. 路劲寻找-八数码问题(判重)
  4. 剑指 Offer II 014. 字符串中的变位词
  5. HDU4279(2012年天津网络赛---数论分析题)
  6. VC使用HTTP协议下载文件
  7. selenium的使用教程2
  8. 面试被问 | 防止 Java 代码被反编译的方法有几种?
  9. 一文详解 Prometheus 的高可用方案:Thanos
  10. 慌了,居然被问到怎么做高并发系统的限流