Maven

  1. <dependency>
  2. <groupId>org.apache.kafka</groupId>
  3. <artifactId>kafka-clients</artifactId>
  4. <version>0.11.0.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.kafka</groupId>
  8. <artifactId>kafka-streams</artifactId>
  9. <version>0.11.0.0</version>
  10. </dependency>

生产者Producer

  1. import java.util.Properties;
  2.  
  3. import org.apache.kafka.clients.producer.KafkaProducer;
  4. import org.apache.kafka.clients.producer.ProducerRecord;
  5.  
  6. public class ProducerDemo {
  7.  
  8. private final KafkaProducer<String, String> producer;
  9.  
  10. public final static String TOPIC = "test5";
  11.  
  12. private ProducerDemo() {
  13. Properties props = new Properties();
  14. props.put("bootstrap.servers", "xxx:9092,1xxx:9092,xxx:9092");//xxx服务器ip
  15. props.put("acks", "all");//所有follower都响应了才认为消息提交成功,即"committed"
  16. props.put("retries", 0);//retries = MAX 无限重试,直到你意识到出现了问题:)
  17. props.put("batch.size", 16384);//producer将试图批处理消息记录,以减少请求次数.默认的批量处理消息字节数
  18. //batch.size当批量的数据大小达到设定值后,就会立即发送,不顾下面的linger.ms
  19. props.put("linger.ms", 1);//延迟1ms发送,这项设置将通过增加小的延迟来完成--即,不是立即发送一条记录,producer将会等待给定的延迟时间以允许其他消息记录发送,这些消息记录可以批量处理
  20. props.put("buffer.memory", 33554432);//producer可以用来缓存数据的内存大小。
  21. props.put("key.serializer",
  22. "org.apache.kafka.common.serialization.IntegerSerializer");
  23. props.put("value.serializer",
  24. "org.apache.kafka.common.serialization.StringSerializer");
  25.  
  26. producer = new KafkaProducer<String, String>(props);
  27. }
  28.  
  29. public void produce() {
  30. int messageNo = 1;
  31. final int COUNT = 5;
  32.  
  33. while(messageNo < COUNT) {
  34. String key = String.valueOf(messageNo);
  35. String data = String.format("hello KafkaProducer message %s from hubo 06291018 ", key);
  36.  
  37. try {
  38. producer.send(new ProducerRecord<String, String>(TOPIC, data));
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42.  
  43. messageNo++;
  44. }
  45.  
  46. producer.close();
  47. }
  48.  
  49. public static void main(String[] args) {
  50. new ProducerDemo().produce();
  51. }
  52. }

消费者Consumer

  1. import java.util.Arrays;
  2. import java.util.Properties;
  3.  
  4. import org.apache.kafka.clients.consumer.ConsumerRecord;
  5. import org.apache.kafka.clients.consumer.ConsumerRecords;
  6. import org.apache.kafka.clients.consumer.KafkaConsumer;
  7.  
  8. public class UserKafkaConsumer extends Thread {
  9.  
  10. public static void main(String[] args){
  11. Properties properties = new Properties();
  12. properties.put("bootstrap.servers", "xxx:9092,xxx:9092,xxx:9092");//xxx是服务器集群的ip
  13. properties.put("group.id", "jd-group");
  14. properties.put("enable.auto.commit", "true");
  15. properties.put("auto.commit.interval.ms", "1000");
  16. properties.put("auto.offset.reset", "latest");
  17. properties.put("session.timeout.ms", "30000");
  18. properties.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
  19. properties.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
  20.  
  21. KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(properties);
  22. kafkaConsumer.subscribe(Arrays.asList("test5"));
  23. while (true) {
  24. ConsumerRecords<String, String> records = kafkaConsumer.poll(100);
  25. for (ConsumerRecord<String, String> record : records) {
  26. System.out.println("-----------------");
  27. System.out.printf("offset = %d, value = %s", record.offset(), record.value());
  28. System.out.println();
  29. }
  30. }
  31.  
  32. }
  33. }

Kafka发布订阅消息的更多相关文章

  1. Kafka是分布式发布-订阅消息系统

    Kafka是分布式发布-订阅消息系统 https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apa ...

  2. 分布式发布订阅消息系统 Kafka 架构设计[转]

    分布式发布订阅消息系统 Kafka 架构设计 转自:http://www.oschina.net/translate/kafka-design 我们为什么要搭建该系统 Kafka是一个消息系统,原本开 ...

  3. 分布式发布订阅消息系统Kafka

    高吞吐量的分布式发布订阅消息系统Kafka--安装及测试   一.Kafka概述 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览, ...

  4. Kafka logo分布式发布订阅消息系统 Kafka

    分布式发布订阅消息系统 Kafka kafka是一种高吞吐量的分布式发布订阅消息系统,她有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳 ...

  5. 发布-订阅消息系统Kafka简介

    转载请注明出处:http://www.cnblogs.com/BYRans/ Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式 ...

  6. Kafka(分布式发布-订阅消息系统)工作流程说明

    Kafka系统架构Apache Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一种快速.可扩展的.设计内在就是分布式的,分区的和 ...

  7. kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统

    一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...

  8. 高吞吐量的分布式发布订阅消息系统Kafka--安装及测试

    一.Kafka概述 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因 ...

  9. JMS发布/订阅消息传送例子

    前言 基于上篇文章"基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送"很容易就可以编写一个发布/订阅消息传送例子,相关环境准备与该篇文章基本类似,主要 ...

随机推荐

  1. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

  2. 选择区域缩放Flex Chart

    http://www.riafan.com/zoom-chart/ 演示地址: http://www.riafan.com/flash/zoomchart/ 下载地址: http://www.riaf ...

  3. 【java笔记】Calendar.getInstance()是什么意思

    Calendar类是个抽象类,因此本身不能被实例化,然而在却创建了Calendar 的对象,但并不是抽象类可以创建对象这个对象并不是Calendar 自身实例,而是其子类实例,这是在getInstan ...

  4. 【CF908G】New Year and Original Order

    [CF908G]New Year and Original Order 题面 洛谷 题解 设\(f[i][j][k][l]\)表示当前在第\(i\)位有\(j\)位大于等于\(k\),当前有没有卡上界 ...

  5. JQuery事件机制

    1 事件操作 1.1 页面载入事件 $(document).ready(function(){ // 在这里写你的代码... }); 或者 $(function($) { // 你可以在这里继续使用$ ...

  6. equals和==方法比较(二)--Long中equals源码分析

    接上篇,分析equals方法在Long包装类中的重写,其他类及我们自定义的类,同样可以根据需要重新equals方法. equals方法定义 equals方法是Object类中的方法,java中所有的对 ...

  7. javaweb(十六)——JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  8. selenium自动化之稳定版本环境介绍

    大家都知道,目前selenium版本已经升级到3.0了,selenium3只是在selenium2的基础上做了一些调整,最明显的区别就是 selenium2对Firefox的支持最高只支持46及以下版 ...

  9. MySQL☞左外链接与右外连接

    外链接查询:即要查询有关联关系的数据,还要查询没有关联关系的数据.(个人理解为:表A和表B两个关联的列中)如下图: emmm,简单的来说两个表的关联关系:book.bid=bookshop.id,他们 ...

  10. Linux目录与文件操作

    文件命名规则: 1.严格区分大小写: 2.长度不能超过255个字符: 3.不能使用/当文件名 mkdir:创建空目录 -p:parent,父目录,逐级创建 -v:verbose,打印详细信息 命令行展 ...