– Start

点击此处观看本系列配套视频


我们先来回答一下上个例子最后问题的答案,很遗憾 Producer 并不能证明消息发送成功了,如果设置了 retry,Producer 会再次发送消息,这会导致消息重复,如何避免?有两种办法,一种是 Idempotent,也就是说支持重复发送,broker 会自动认为是一条消息,另一种办法是使用事务。
下面的例子演示使用 Idempotent。

package shangbo.kafka.example2;import java.util.Properties;import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.Producer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;public class App {public static void main(String[] args) {// Producer 配置信息,应该配置在属性文件中Properties props = new Properties();//指定要连接的 broker,不需要列出所有的 broker,但建议至少列出2个,以防某个 broker 挂了props.put("bootstrap.servers", "localhost:9092");props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");props.put("enable.idempotence", "true");
//      props.put("retries", 3); // 不能手动设置 retries,自动设置为 Integer.MAX_VALUE
//      props.put("acks", "1"); // 不能手动设置 acks,自动设置为 all// 创建 ProducerProducer<String, String> producer = new KafkaProducer<String, String>(props);// 发送消息producer.send(new ProducerRecord<String, String>("topic0", "message 4"), new Callback() {public void onCompletion(RecordMetadata metadata, Exception exception) {if(exception != null) {System.out.println("send message4 failed with " + exception.getMessage());} else {// offset 是消息在 partition 中的编号,可以根据 offset 检索消息System.out.println("message4 sent to " + metadata.topic() + ", partition " + metadata.partition() + ", offset " + metadata.offset());    }}});// producer 需要关闭,放在 finally 里producer.close();}
}

– 更多参见:Kafka 精萃
– 声 明:转载请注明出处
– Last Edited on 2018-06-13
– Written by ShangBo on 2018-06-13
– End

Kafka 发送消息 Idempotent相关推荐

  1. Kafka 发送消息 Idempotent -- Spring 整合

    – Start 点击此处观看本系列配套视频 废话少说,直接上代码. package shangbo.kafka.example8;import org.springframework.context. ...

  2. 物联网架构----EMQ-Hook了解、连接Kafka发送消息

    物联网架构----EMQ-Hook了解.连接Kafka发送消息 1. 前言 按照我自己设计的物联网框架,对于MQTT集群中的所有消息,是要持久化到磁盘的,这里采用一个消息队列中间件Kafka作为数据缓 ...

  3. kafka发送消息的三种方式

    1.发后即忘(fire-and-forget) 只管往kafka发送消息而并不关心消息是否正确到达.正常情况没什么问题,不过有些时候(比如不可重试异常)会造成消息的丢失.这种发送方式性能最高,可靠性最 ...

  4. springboot kafka发送消息

    场景:kafka发送消息,并且根据消息发送的不同渠道和消息类型(例如发送到WX,DingDing,邮箱),采取不同的线程池处理 1.引入依赖 <dependency><groupId ...

  5. 在idea中往Kafka发送消息失败

    今天在学习Kafka整合Springboot项目的时候,往Kafka发送消息,消费者一直消费不到,ip地址,端口号,防火墙的状态都没有发现问题.后来发现是因为idea没有连接到虚拟机的,一直在找本机的 ...

  6. kafka发送消息至指定分区

    前言 在实际使用中,我们可能需要对某个topic下不同的消息进行分类管理,比如确保消费的顺序性,在这种场景下,我们可以首先确保生产者发送消息到指定的分区即可 本文的测试基于docker搭建的一个双节点 ...

  7. Kafka 发送消息

    – Start 点击此处观看本系列配套视频 在上个例子中,我们使用了脚本来发送消息,来吧,让我们来自己写点代码来发送消息.首先还是按照上个例子,先启动 ZooKeeper 和 启动 Kafka bor ...

  8. Kafka 发送消息失败

    在使用brew services start kafka 成功启动kafka后, 执行发送消息会有提示以下,无法发送消息. kafka-console-producer --broker-list l ...

  9. springboot使用kafka发送消息,消息过大报错

    报错信息如下所示: Caused by: org.apache.kafka.common.errors.RecordTooLargeException: The message is 1527150 ...

最新文章

  1. 【H.264/AVC视频编解码技术详解】十九:熵编码算法(5)——H.264的CABAC(上):语法元素的二值化方法...
  2. 虚拟磁盘类型_一起来了解一下Window10系统中虚拟硬盘的相关操作
  3. dlna和miracast可以共存吗_AirPlay、DLNA、Miracast三大无线技术介绍
  4. php文件上传漏洞waf,文件上传绕过WAF
  5. 【渝粤教育】国家开放大学2018年春季 7403-21T素质与思想政治教育 参考试题
  6. python实现随机乱序/洗牌
  7. SQL点滴9—使用with语句来写一个稍微复杂sql语句
  8. java 开发平台idea_JAVA开发平台intellij idea使用教程:有哪些方法可以实现自动导入...
  9. 麒麟810加持,华为nova 5z让你一步从青铜变王者
  10. 红米Note 8 Pro测评:论如何用1399元买到超大底四摄
  11. 【整理】不安装VS的Web服务器部署
  12. leetcode刷题日记- 重复叠加字符串匹配
  13. paip. http 405 的解决..
  14. java string返回_老生常谈Java String字符串(必看篇)
  15. java reader类 实例_java字符流-java writer-java reader-嗨客网
  16. JAVA一维数组求和
  17. java除去类里面的黄色警告_java中使用list会出现黄色警告图标如何去除
  18. 巴西电商Olist数据分析项目:SQL+FineBI
  19. IAR 设置TAB代码格式问题
  20. python 多态app_多态简介 | Python从入门到精通:高阶篇之三十三-阿里云开发者社区...

热门文章

  1. Troubleshooting: WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!
  2. 【视觉-单目三维重建-理论篇】单目视觉三维重建----论文调研1
  3. 【强化学习】什么是强化学习算法?
  4. 鲸探发布点评:8月19日发售《小窗白云与凿山骨》数字藏品
  5. 解决import cv2找不到指定模块问题
  6. openlayers3—地图图层数据来源(ol.source)
  7. 生活在深圳我们需要的不是叹息与感概
  8. 巨头都在追逐的眼球追踪技术,究竟能带来什么?
  9. C# 开发的网络数据包抓取的的实现
  10. halcon一维码识别