梦相随1006

版权归 梦相随1006 所有,未经 https://www.cnblogs.com/xin1006 作者许可,严禁转载

导航

kafka基本概念-客户端工具offsetexplorer的使用

 

上图为Kafka的典型架构图,对于消息的生产以及消费逻辑不在本文的讨论范畴,主要就Broker的数据存储做以浅显的总结。首先解释一下常见的相关专业术语:

-- Broker:消息中间件处理节点;每个Kafka服务节点称之为一个Broker,一个Kafka集群由一个或多个Broker组成
-- Topic:一类特定数据集合的统称;可类比DB中Table的概念;逻辑概念
-- Producer:消息的生产者,向Broker发送消息的客户端
-- Consumer:消息的消费者,向Broker读取消息的客户端
-- Consumer Group:每一个Consumer隶属于一个特定的Consumer
-- Group,一条消息可以被不同Group中的Consumer消费,但同一Group内的消息只能被一个Consumer消费
-- Partition:是对Topic中所包含数据集的物理分区;物理概念
-- Replication:副本集;是Kafka高可用的一种保障机制

 

客户端工具offsetexplorer2.2.0

 

******查看指定消费者组的消费情况(是否有积压,是否正在被消费)******
-- 随时执行
bin/kafka-consumer-groups.sh --describe --bootstrap-server kafkaIP:kafkaPort --group 消费者组名 --command-config config/consumer.properties
bin/kafka-consumer-groups.sh --describe --bootstrap-server kafkaIP:kafkaPort --group 消费者组名 --command-config config/consumer.properties | grep 主题名 
 
 
******重置消费者组的消费位置(支持两种,一种是偏移到指定的时间戳,一种是偏移到指定位置)******
 注意: 1. 配置文件值 config/consumer.properties的group_id要注释掉
 注意: 2. 时间是没有加时区的(减8)
 注意 3. 偏移当前消费者组的消费位置时,使用该消费者组的程序需要停止后才能通过命令修改消费位置
 注意 4. (测试环境可自行决定,生产环境慎重使用 )
  比如下面这个命令是偏移到 4月30日17:30的位置,则时间表达式是:  2023-04-30T09:30:00.000
 bin/kafka-consumer-groups.sh --reset-offsets --to-datetime 新的时间戳(如:2023-04-30T09:30:00.000) --bootstrap-server kafkaIP:kafkaPort --group 消费者组名 --command-config config/consumer.properties --topic 主题名 --execute
 bin/kafka-consumer-groups.sh --reset-offsets --to-offset  新的位置数值(如:557083142) --bootstrap-server kafkaIP:kafkaPort --group 消费者组名 --command-config config/consumer.properties --topic 主题名:分区编号 --execute

 

 

--新建主题
bin/kafka-topics.sh --create -bootstrap-server kafkaIP:kafkaPort --partitions 7 --replication-factor 3 --topic 主题名  --command-config config/client.properties

查看某个主题是否存在:
bin/kafka-topics.sh --list --zookeeper zookeeperIP:zookeeperPort/kafka | grep  主题名
查看某个主题详细信息:
bin/kafka-topics.sh --describe --zookeeper zookeeperIP:zookeeperPort/kafka --topic 主题名
--删除某个主题
bin/kafka-topics.sh --delete --zookeeper zookeeperIP:zookeeperPort/kafka --topic 主题名

 

 

错误描述:org.apache.kafka.common.errors.RecordTooLargeException: The message is 1814030 bytes when serialized which is larger than1048576, which is the value of the max.request.size configuration
 
解决办法:kafka默认是1M,修改允许的消息最大字节数。 可针对全局broker 或 具体的Topic来修改
 
broker方式必须重启kafka服务,Topic级别则是立即生效。
 
Topic级别的步骤:
 
1, bin/kafka-topics.sh  --zookeeper zookeeperIP:zookeeperPort/kafka --alter  --topic 主题名 --config max.message.bytes=10485760
 
2,  在配置中心的配置文件中 增加 max-request-size: 10485760 ,我这里同时修改了 batch-size, buffer-memory的值
 
 kafka:
    producer:
      batch-size: 163840
      buffer-memory: 3355443200
      max-request-size: 10485760
 
3,  Kafka生产者KafkaProducerConfig配置类 读取该配置项
 
@Value("${spring.kafka.producer.max-request-size:1048576}")
private int maxRequestSize;
 
props.put(ProducerConfig.MAX_REQUEST_SIZE_CONFIG, maxRequestSize);
 
 

posted on 2022-05-20 16:24  梦相随1006  阅读(1629)  评论(0编辑  收藏  举报