1. package clickstream
  2. import java.util.{Properties, Random, UUID}
  3. import kafka.producer.{KeyedMessage, Producer, ProducerConfig}
  4. import org.codehaus.jettison.json.JSONObject
  5.  
  6. /** *
  7. Created by 郭飞 on 2016/5/31.
  8. */
  9. object KafkaMessageGenerator {
  10. private val random = new Random()
  11. private var pointer = -
  12. private val os_type = Array(
  13. "Android", "IPhone OS",
  14. "None", "Windows Phone")
  15.  
  16. def click() : Double = {
  17. random.nextInt()
  18. }
  19.  
  20. def getOsType() : String = {
  21. pointer = pointer +
  22. if(pointer >= os_type.length) {
  23. pointer =
  24. os_type(pointer)
  25. } else {
  26. os_type(pointer)
  27. }
  28. }
  29.  
  30. def main(args: Array[String]): Unit = {
  31. val topic = "user_events"
  32. //本地虚拟机ZK地址
  33. val brokers = "hadoop1:9092,hadoop2:9092,hadoop3:9092"
  34. val props = new Properties()
  35. props.put("metadata.broker.list", brokers)
  36. props.put("serializer.class", "kafka.serializer.StringEncoder")
  37.  
  38. val kafkaConfig = new ProducerConfig(props)
  39. val producer = new Producer[String, String](kafkaConfig)
  40.  
  41. while(true) {
  42. // prepare event data
  43. val event = new JSONObject()
  44. event
  45. .put("uid", UUID.randomUUID())//随机生成用户id
  46. .put("event_time", System.currentTimeMillis.toString) //记录时间发生时间
  47. .put("os_type", getOsType) //设备类型
  48. .put("click_count", click) //点击次数
  49.  
  50. // produce event message
  51. producer.send(new KeyedMessage[String, String](topic, event.toString))
  52. println("Message sent: " + event)
  53.  
  54. Thread.sleep()
  55. }
  56. }
  57. }
  58.  
  59. 作者:MichaelFly
  60. 链接:http://www.jianshu.com/p/ccba410462ba
  61. 來源:简书
  62. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Kafka消息模拟器的更多相关文章

  1. Kafka消息时间戳(kafka message timestamp)

    最近碰到了消息时间戳的问题,于是花了一些功夫研究了一下,特此记录一下.   Kafka消息的时间戳 在消息中增加了一个时间戳字段和时间戳类型.目前支持的时间戳类型有两种: CreateTime 和 L ...

  2. Kafka 消息监控 - Kafka Eagle

    1.概述 在开发工作当中,消费 Kafka 集群中的消息时,数据的变动是我们所关心的,当业务并不复杂的前提下,我们可以使用 Kafka 提供的命令工具,配合 Zookeeper 客户端工具,可以很方便 ...

  3. kafka消息会不会丢失

    转载:https://baijiahao.baidu.com/s?id=1583469327946027281&wfr=spider&for=pc 消息发送方式 想清楚Kafka发送的 ...

  4. Kafka简介及使用PHP处理Kafka消息

    Kafka简介及使用PHP处理Kafka消息 Kafka 是一种高吞吐的分布式消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理消息等,同时具有更高的吞吐率,支持分区.多副本.冗余,因此被 ...

  5. 【转】解决Maxwell发送Kafka消息数据倾斜问题

    最近用Maxwell解析MySQL的Binlog,发送到Kafka进行处理,测试的时候发现一个问题,就是Kafka的Offset严重倾斜,三个partition,其中一个的offset已经快200万了 ...

  6. kafka消息的分发与消费

    关于 Topic 和 Partition: Topic: 在 kafka 中,topic 是一个存储消息的逻辑概念,可以认为是一个消息集合.每条消息发送到 kafka 集群的消息都有一个类别.物理上来 ...

  7. 基于Kafka消息驱动最终一致事务(二)

    实现用例分析 上篇基于Kafka消息驱动最终一致事务(一)介绍BASE的理论,接着我们引入一个实例看如何实现BASE,我们会用图7显示的算法实现BASE.

  8. 基于Kafka消息驱动最终一致事务(一)

    基本可用软状态最终一致事务 本用例分两个数据库分别是用户库和交易库,不使用分布式事务,使用基于消息驱动实现基本可用软状态最终一致事务(BASE).现在说明下事务逻辑演化步骤,尊从CAP原则,即分布式系 ...

  9. kafka消息队列的简单理解

    kafka在大数据.分布式架构中都很流行.kafka可以进行流式计算,也可以做为日志系统,还可以用于消息队列. 本篇主要是消息队列相关的知识. 零.kafka作为消息队列的优点: 分布式的系统 高吞吐 ...

随机推荐

  1. url-pattern配置

    <url-pattern>/a</url-pattern> <url-pattern>/ff.do</url-pattern> <url-patt ...

  2. Python 的 Matplotlib 画图库

    Matplotlib安装 NumPy库方便数值运算,但枯燥的数据并不利于人们的直观理解. 数据需要可视化. Matplotlib:一个数据可视化函数库 使用前需要安装  利用Python自带 ...

  3. JavaScript 设计模式之命令模式

    一.命令模式概念解读 1.命令模式概念文字解读 命令模式(Command)的定义是:用来对方法调用进行参数化处理和传送,经过这样处理过的方法调用可以在任何需要的时候执行.也就是说该模式旨在将函数的调用 ...

  4. Xcode8的调试技能Memory Graph 实战解决闭包引用循环问题

    Xcode8的调试技能又增加了一个黑科技:Memory Graph.简单的说就是可以在运行时将内存中的对象生成一张图. 那么通过一个实际项目来练习一下吧. 首先我们写了一个自定义UIView:MyVi ...

  5. 【LeetCode】41. First Missing Positive (3 solutions)

    First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...

  6. 奇怪的php问题

    <?php echo 999999999999 % 2; ?> 上面的结果居然是-1,不可思议. 999999999999 % 2

  7. R.string获取的是数字或者R.integer数字不对的问题

    String msg = R.string.menu_title; 获取menu_title的String值,但发现这样写报错,原因R.string.menu_title是int类型的,可是通过以下方 ...

  8. sublime text怎样安装ctags来定位函数

    sublime确实是一款非常不错的开发软件.用起来非常爽,里面集成了非常多插件.仅仅要安装就可以, 下来来介绍下sublime中ctags插件的安装,安装这个插件之后就能够高速定位某函数了,很方便. ...

  9. [Android&amp;Java]浅谈设计模式-代码篇:观察者模式Observer

    观察者,就如同一个人,对非常多东西都感兴趣,就好像音乐.电子产品.Game.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...

  10. 谈谈CListCtrl如何调整行高

    原文链接: http://blog.csdn.net/sstower/article/details/9094939 调整CListCtrl 行高通常有3种方法: 1.设定字体2.设定图片3.处理Me ...