kafka
qq_duhai
好记性不如烂笔头...
展开
-
spring kafka demo
1.pom.xml引入<!-- kafka交互式查询使用的数据库 --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>1.1.1.RELEASE</version> </dependency> <原创 2020-12-10 15:45:19 · 258 阅读 · 0 评论 -
KafkaAdminClient
一般情况下,我们都习惯使用kafka-topics .sh 脚本来管理主题,但有些时候我们希望将主题管理类的功能集成到公司内部的系统中, 打造集管理、监控、运维、告警为一体的生态平台,那么就需要以程序调用API 的方式去实现。本节主要介绍KafkaAdminC!ient 的基本使用方式,以及采用这种调用API 方式下的创建主题时的合法性验证。在Kafka 0.11.0.0 版本之前,我们可以通过kafka-core 包( Kafka 服务端代码)下的kafka.admin.AdrninCLient 和k转载 2020-10-30 09:40:41 · 1050 阅读 · 0 评论 -
kafka 创建主题
1.控制台通过kafka-topics.sh 脚本来创建主题。在1.3 节演示消息的生产与消费时就通过这种方式创建了一个分区数为4、副本因子为3 的主题topic-demo . 下面通过创建另一个主题topic-create 来回顾一下这种创建主题的方式,示例如下:[root@nodel kafka 2. ll-2. 0. 0] # bin/kafka-topics .sh - zookeeper localhost: 2181/kafka --create --topic topic - cr原创 2020-10-29 14:57:53 · 4940 阅读 · 0 评论 -
kafka消费者客户端自定义拦截器
与生产者客户端拦截器机制一样,kafka消费者客户端中也定义了拦截器逻辑,通过实现ConsumerInterceptor来实现自定义拦截器逻辑,ConsumerInterceptor主要有三个方法:public ConsumerRecords<String, String> onConsume(ConsumerRecords<String, String> records)consumer会在poll方法返回之前调用此方法,来对消息进行定制化的操作,比如修改消息内容,按照一定转载 2020-10-29 11:30:47 · 848 阅读 · 0 评论 -
kafka seek方法
我们知道消息的拉取是根据poll()方法中的逻辑来处理的,这个poll()方法中的逻辑对于普通的开发人员而言是一个黑盒,无法精确地掌控其消费的起始位置。提供的auto.offset.reset 参数也只能在找不到消费位移或位移越界的情况下粗粒度地从开头或末尾开始消费。有些时候,我们需要一种更细粒度的掌控,可以让我们从特定的位移处开始拉取消息,而KafkaConsumer 中的seek()方法正好提供了这个功能,让我们得以追前消费或回溯消费。seek()方法的具体定义如下:public void se原创 2020-10-29 11:22:38 · 3565 阅读 · 0 评论 -
kafka 控制消费
Kafka Consumer 提供了对消费速度进行控制的方法,在有些应用场景下我们可能需要暂停某些分区的消费而先消费其他分区,当达到一定条件时再恢复这些分区的消费。KafkaConsumer中使用pause()和resume()方法来分别实现暂停某些分区在拉取操作时返回数据给客户端和恢复某些分区向客户端返回数据的操作。这两个方法的具体定义如下:public void pause(Collection<TopicPartition> partitions)public void resum原创 2020-10-29 10:23:32 · 1780 阅读 · 0 评论 -
kafka 手动提交的同步提交和异步提交
自动位移提交的方式在正常情况下不会发生消息丢失或重复消费的现象,但是在编程的世界里异常无可避免,与此同时,自动位移提交也无法做到精确的位移管理。在Kafka 中还提供了手动位移提交的方式,这样可以使得开发人员对消费位移的管理控制更加灵活。很多时候并不是说拉取到消息就算消费完成,而是需要将消息写入数据库、写入本地缓存,或者是更加复杂的业务处理。在这些场景下,所有的业务处理完成才能认为消息被成功消费,手动的提交方式可以让开发人员根据程序的逻辑在合适的地方进行位移提交。开启手动提交功能的前提是消费者客户端参数原创 2020-10-29 10:14:38 · 7526 阅读 · 3 评论 -
kakfa 获取一个topic全部的分区信息的元数据
如果我们事先并不知道主题中有多少个分区怎么办?KafkaConsumer 中的partitionsFor()方法可以用来查询指定主题的元数据信息, partitionsFor()方法的具体定义如下:public List <PartitionInfo > partitionsFor(String topic)其中Partitionlnfo 类型即为主题的分区元数据信息,此类的主要结构如下:public class PartitionInfo { private fin原创 2020-10-28 16:59:43 · 1400 阅读 · 0 评论 -
kafka metadata.max.age.ms参数
记录一下工作中遇到的一个问题:我首先消费topic,按照一个正则表达式的方式可以消费到已经存在的topic:111_property_47_post、222_property_47_post但是现在有一个新的topic:333_property_47_post 创建,并向其中生产了数据,在一定的时间内,是无法消费到这个topic中的数据的,这是为什么呢?因为 metadata.max.age.ms 这个参数,元数据有效期毫秒值5601000(5分钟)以毫秒为单位的时间段之后,即使我们原创 2020-10-28 16:39:04 · 2917 阅读 · 0 评论 -
Kafka 暂停某些分区消费和消费速度控制
在有些场景可以需要暂停某些分区消费,达到一定条件再恢复对这些分区的消费,可以使用pause()方法暂停消费,resume()方法恢复消费,示例代码如下:package com.bonc.rdpe.kafka110.consumer; import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Collections;import java.uti转载 2020-10-28 10:06:57 · 1990 阅读 · 6 评论 -
Kafka-消费者订阅主题和取消订阅
消费者订阅消费者通过 subscribe() 和 assign() 两种方式订阅主题subscribe()使用 subscribe() 可以订阅一个或多个主题,对于这个方法而言,可以以集合的方式订阅多个主题,也可以以正则表达式的形式订阅特定模式的主题。subscribe 的几个重载方法如下:public void subscribe(Collection<String> topics)public void subscribe(Pattern pattern, Consu转载 2020-10-28 09:33:20 · 6023 阅读 · 0 评论 -
【Kafka】Kafka消费者组subscribe和assign的正确使用
使用Apache Kafka 消费者组时,有一个为消费者分配对应分区partition的过程,我们可以使用“自动”subscribe和“手动”assign的方式。同时进行“自动”和“手动”的分区分配是会互相影响的,有时会把事情搞糟。正确的使用,首先要了解这两种方式的场景。消费者组的使用场景Kafka里的消费者组有两个使用的场景:“队列模式”:在同一组的消费者共同消费一个主题的所有消息,而且确保一条消息只被一个消费者处理。一个主题的所有的分区会和一个消费组的所有消费者做关联:每个消费者和一到多转载 2020-10-28 09:21:27 · 1326 阅读 · 0 评论 -
Kafka的assign和subscribe订阅模式
一、前言:使用Apache Kafka消费者组时,有一个为消费者分配对应分区partition的过程,我们可以使用“自动”subscribe和“手动”assign的方式。KafkaConsumer.subscribe():为consumer自动分配partition,有内部算法保证topic-partition以最优的方式均匀分配给同group下的不同consumer。 KafkaConsumer.assign():为consumer手动、显示的指定需要消费的topic-partitions,不受转载 2020-10-28 08:47:23 · 4239 阅读 · 0 评论 -
Kafka Consumer API样例
Kafka Consumer API样例1. 自动确认Offset说明参照:http://blog.csdn.net/xianzhen376/article/details/51167333 Properties props = new Properties(); /* 定义kakfa 服务的地址,不需要将所有broker指定上 */ props.put("bootstrap.servers", "localhost:9092"); /* 制定consume.转载 2020-10-26 11:19:02 · 96 阅读 · 0 评论 -
kafka消费者之seek方法
继续kafka学习之旅。今天学习的还是<深入理解kafka-核心设计与实践原理>一书。上一篇博客,学习了消费者,今天继续学习消费者。auto.offset.reset。这个参数的意思是:当kafka消费者在_consumer_offset主题中找不到所属分区的offset时,该参数就派上用场了,改参数有三个可选值,latest、earilst、none。第一个取值是说,当消费者找不到偏移量时,就从日志尾部开始消费,earilst是从日志头部开始消费。none是既不从头也不从尾,而是抛出NoOf转载 2020-10-26 11:15:20 · 4203 阅读 · 0 评论 -
监控Kafka(JMX)
前言本节将介绍一些关于Kafka相关指标,包括主题、分区、生产者、消费者等(并不是全部的度量指标)。环境:Kafka-2.1.1 + Kafka 集群GitHub Kafka代码1. 使用JMX 监控集群JMX的全称为Java Management Extensions。可以管理、监控正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。开启JMX 端口 开启端口有如下两种方式:在执行启动Kafka命令使用如下步骤:export JMX_POR转载 2020-09-27 11:00:02 · 1008 阅读 · 0 评论 -
kafka:broker、client、spring-kafka版本间的关系
broker、client:(Kafka双向兼容)在Kafka 0.10.2.0之前,Kafka服务器端和客户端版本之间的兼容性是“单向”的,即高版本的broker可以处理低版本client的请求。反过来,低版本的broker不能处理高版本client的请求。由于升级client要远比升级broker简单得多,因此这个限制给很多用户带来了麻烦,甚至有很多人都不愿意去升级broker版本——毕竟无downtime的情况下正确升级Kafka服务器是个不小的挑战。自0.10.2.0版本开始,社区...原创 2020-09-24 17:20:21 · 8138 阅读 · 1 评论 -
Windows安装运行Kafka
简介本文讲述了如何在Windows OS上配置并启动Apache Kafka,这篇指南将会指导你安装Java和Apache Zookeeper。Apache Kafka是一个快速可扩展的消息队列,能够应对繁重的读写负载,即IO相关工作。关于在Windows安装Kafka的具体步骤,可以查看这个视频:https://youtu.be/OJKesEpO6ok下载所需文件根据系统OS转载 2016-12-07 11:12:15 · 370 阅读 · 0 评论 -
Kafka入门经典教程
1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic、发送消息、消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有哪两个条件?6.producer是否直接将数据发送到broker的leader(主节点)?7.Kafa consumer是否可以消费指定分区消息?8.Kafka消息是采用Pull模式转载 2016-12-12 11:10:16 · 270 阅读 · 0 评论