Kafka常用命令之kafka-console-consumer.sh

本文介绍kafka-console-consumer.sh脚本的使用方法,包括如何消费消息、显示消息键值等操作。提供了多种参数选项,如--bootstrap-server、--from-beginning等,帮助用户灵活配置消费行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 kafka-console-consumer.sh 脚本是一个简易的消费者控制台。该 shell 脚本的功能通过调用 kafka.tools 包下的 ConsoleConsumer 类,并将提供的命令行参数全部传给该类实现。

注意:Kafka 从 2.2 版本开始将 kafka-topic.sh 脚本中的 −−zookeeper 参数标注为 “过时”,推荐使用 −−bootstrap-server 参数。若读者依旧使用的是 2.1 及以下版本,请将下述的 --bootstrap-server 参数及其值手动替换为 --zookeeper zk1:2181,zk2:2181,zk:2181。一定要注意两者参数值所指向的集群地址是不同的。

  • 消息消费
    bin/kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --topic topicName
    
     表示从 latest 位移位置开始消费该主题的所有分区消息,即仅消费正在写入的消息。
  • 从开始位置消费
    bin/kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --from-beginning --topic topicName
    
     表示从指定主题中有效的起始位移位置开始消费所有分区的消息。
  • 显示key消费
    bin/kafka-console-consumer.sh --bootstrap-server node1:9092,node2:9092,node3:9092 --property print.key=true --topic topicName
    
     消费出的消息结果将打印出消息体的 keyvalue

 若还需要为你的消息添加其他属性,请参考下述列表。

参数值类型说明有效值
--topicstring被消费的topic
--whiteliststring正则表达式,指定要包含以供使用的主题的白名单
--partitioninteger指定分区
除非指定’–offset’,否则从分区结束(latest)开始消费
--offsetstring执行消费的起始offset位置
默认值:latest
latest
earliest
<offset>
--consumer-propertystring将用户定义的属性以key=value的形式传递给使用者
--consumer.configstring消费者配置属性文件
请注意,[consumer-property]优先于此配置
--formatterstring用于格式化kafka消息以供显示的类的名称
默认值:kafka.tools.DefaultMessageFormatter
kafka.tools.DefaultMessageFormatter
kafka.tools.LoggingMessageFormatter
kafka.tools.NoOpMessageFormatter
kafka.tools.ChecksumMessageFormatter
--propertystring初始化消息格式化程序的属性print.timestamp=true|false
print.key=true|false
print.value=true|false
key.separator=<key.separator>
line.separator=<line.separator>
key.deserializer=<key.deserializer>
value.deserializer=<value.deserializer>
--from-beginning从存在的最早消息开始,而不是从最新消息开始
--max-messagesinteger消费的最大数据量,若不指定,则持续消费下去
--timeout-msinteger在指定时间间隔内没有消息可用时退出
--skip-message-on-error如果处理消息时出错,请跳过它而不是暂停
--bootstrap-serverstring必需(除非使用旧版本的消费者),要连接的服务器
--key-deserializerstring
--value-deserializerstring
--enable-systest-events除记录消费的消息外,还记录消费者的生命周期
(用于系统测试)
--isolation-levelstring设置为read_committed以过滤掉未提交的事务性消息
设置为read_uncommitted以读取所有消息
默认值:read_uncommitted
--groupstring指定消费者所属组的ID
--blackliststring要从消费中排除的主题黑名单
--csv-reporter-enabled如果设置,将启用csv metrics报告器
--delete-consumer-offsets如果指定,则启动时删除zookeeper中的消费者信息
--metrics-dirstring输出csv度量值
需与[csv-reporter-enable]配合使用
--zookeeperstring必需(仅当使用旧的使用者时)连接zookeeper的字符串。
可以给出多个URL以允许故障转移
<think>我们正在讨论Kafka命令行工具中的消费者控制台脚本,特别是在集群环境下的使用。 用户需要了解kafka-console-consumer.sh在集群环境下的使用方式,包括命令示例。 首先,我们需要明确kafka-console-consumer.sh的基本用法,然后扩展到集群环境。 在集群环境中,我们通常会指定bootstrap-server参数,该参数可以指定集群中的一个或多个broker(通常我们会提供多个以提供容错)。 基本语法: bin/kafka-console-consumer.sh --bootstrap-server <broker_list> --topic <topic_name> [其他选项] 其中: --bootstrap-server:指定Kafka集群的broker地址,多个用逗号分隔,例如:broker1:9092,broker2:9092,broker3:9092 --topic:指定要消费的主题 其他常用选项: --from-beginning:从最早的消息开始消费,如果不指定则从最新的消息开始。 --group <group_id>:指定消费者组,如果不指定则会生成一个随机的消费者组。 --partition <partition_id>:指定消费的分区(注意:如果指定了分区,则不能使用消费者组功能,且不能同时指定多个分区) --property:设置一些属性,例如打印key(print.key=true)、打印时间戳(print.timestamp=true)等。 在集群环境下,我们通常使用--bootstrap-server来连接集群,集群会自动处理分区和副本的位置。 示例1:消费单个主题 bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic 示例2:从开始位置消费 bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic --from-beginning 示例3:指定消费者组 bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic --group my-group 示例4:打印key和value(默认只打印value) bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic \ --property print.key=true --property key.separator=":" 示例5:消费特定分区(注意:此时不能使用--group,因为分区指定和消费者组互斥) bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic --partition 0 示例6:使用消息过滤器(例如,只消费key不为空的消息)?注意:控制台消费者本身不提供复杂的过滤功能,但可以通过属性配置有限过滤,或者使用其他工具如kafka-filter。控制台消费者通常用于简单测试,复杂过滤建议使用API。 不过,我们可以通过--property来设置一些过滤,但原生的控制台消费者不支持SQL那样的过滤。如果需要过滤,可能需要使用kafka-console-consumer配合grep等命令行工具,但这可能不是可靠的方式(因为消息是二进制的,而grep是文本的)。 另外,在集群环境下,我们还可以使用--consumer.config指定配置文件,配置文件里可以设置更多的属性,比如安全认证等。 示例7:使用SSL认证 首先,创建一个配置文件consumer.properties,内容如下: security.protocol=SSL ssl.truststore.location=/path/to/truststore.jks ssl.truststore.password=password ssl.keystore.location=/path/to/keystore.jks ssl.keystore.password=password ssl.key.password=password 然后运行: bin/kafka-console-consumer.sh --bootstrap-server broker1:9092,broker2:9092,broker3:9092 --topic test-topic \ --consumer.config consumer.properties 注意:在集群环境下,确保bootstrap-server参数中的地址和端口是可达的,并且防火墙设置允许访问。 另外,如果集群启用了SASL认证,则需要在配置文件中配置相应的认证信息。 示例8:使用SASL/PLAIN认证 配置文件内容: security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret"; 然后同样使用--consumer.config指定。 重要提示:在实际生产环境中,不建议使用控制台消费者进行大量数据的消费,因为它仅用于测试和调试。 最后,我们总结一下在集群环境下使用kafka-console-consumer.sh的关键点: 1. 使用--bootstrap-server指定集群的多个broker地址。 2. 根据需求选择是否从开始消费(--from-beginning)或指定消费者组(--group)。 3. 需要安全认证时,通过配置文件设置安全属性。 以上是基本的使用方式和示例,用户可以根据实际集群配置进行调整。 现在,根据指令,我们需要生成相关问题。</think>### Kafka控制台消费者在集群环境下的使用指南 在Kafka集群环境下使用`kafka-console-consumer.sh`命令时,需通过`--bootstrap-server`参数指定集群节点地址,使消费者能够发现集群中的所有broker。以下是详细使用方式: #### 基础命令格式 ```bash bin/kafka-console-consumer.sh \ --bootstrap-server <broker1:port>,<broker2:port>,<broker3:port> \ --topic <topic_name> \ [其他参数] ``` #### 关键参数说明 1. **`--bootstrap-server`**(必需) 指定集群中至少2个broker地址(建议3个),多个地址用逗号分隔: ```bash --bootstrap-server kafka-node1:9092,kafka-node2:9092,kafka-node3:9092 ``` 2. **`--topic`**(必需) 指定消费的目标主题: ```bash --topic user_activity_logs ``` 3. **`--group`**(推荐) 指定消费者组实现负载均衡: ```bash --group cluster_consumer_group ``` 4. **`--from-beginning`** 从分区最早偏移量开始消费(默认从最新位置): ```bash --from-beginning ``` #### 集群环境示例 1. **基础消费**(从最新消息开始) ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 \ --topic sensor_data ``` 2. **全量消费**(读取所有历史消息) ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092 \ --topic audit_logs \ --from-beginning ``` 3. **消费者组消费** ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092,kafka3:9092 \ --topic payment_events \ --group fraud_detection_group ``` 4. **带消息键消费**(显示消息Key) ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092 \ --topic device_status \ --property print.key=true \ --property key.separator=":" ``` 5. **安全集群消费**(启用SASL认证) ```bash bin/kafka-console-consumer.sh \ --bootstrap-server kafka1:9092,kafka2:9092 \ --topic secure_logs \ --consumer.config client.properties ``` `client.properties` 文件内容: ```properties security.protocol=SASL_SSL sasl.mechanism=SCRAM-SHA-256 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \ username="admin" \ password="secret"; ``` #### 注意事项 1. **高可用保障** 始终配置至少2个bootstrap broker地址,防止单点故障导致消费者无法连接集群[^1]。 2. **网络可达性** 确保运行消费者的机器能访问所有broker的IP和端口(默认9092)。 3. **消费者组管理** 使用`--group`时,相同组ID的消费者会自动平衡分区分配。查看组状态: ```bash bin/kafka-consumer-groups.sh --bootstrap-server kafka1:9092 --list ``` 4. **性能限制** 控制台消费者仅适用于调试和小数据量场景,生产环境应使用API消费者[^2]。 #### 常见问题排查 - **连接失败**:检查防火墙设置和DNS解析 - **无消息消费**:确认主题存在且已发送数据,检查`--from-beginning`使用 - **认证失败**:验证`client.properties`中的凭证和协议类型 ---
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值