【问题标题】:Kafka consumer console subscribing to multiple topics订阅多个主题的 Kafka 消费者控制台
【发布时间】:2017-05-16 08:39:58
【问题描述】:

我使用 Ubuntu server 16.04 来尝试使用 Kafka。对于启动生产者和消费者控制台的命令,我使用以下命令。

生产者控制台:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic hello-topic

消费者控制台:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic hello-topic

但上面的命令只订阅一个主题。如何订阅多个主题?

【问题讨论】:

  • 你试过控制台消费者的白名单选项吗?
  • @Harald 还没有,我不知道有白名单

标签: apache-kafka


【解决方案1】:

首先,您应该使用选项 bootstrap-server 连接到 Kafka 服务器本身,而不是 zookeeper 服务器。

对于多个主题,您可以使用 whitelist 选项。这将被解释为正则表达式并且必须被引用,请参阅Kafka documentation。 所以正确的命令是:

kafka-console-consumer.sh --bootstrap-server localhost:9092 --whitelist 'hello-topic|world-topic|another-topic'

其他的表达方式也是可以的,比如

kafka-console-consumer.sh --bootstrap-server localhost:9092 --whitelist '.*'

注意

为方便起见,我们允许使用 ',' 而不是 '|'指定主题列表。

不适用于 Kafka 2.0,可能只有在镜像时才起作用,我还没有尝试过。

【讨论】:

  • 我使用的是 kafka 2.6.0 这个命令对我不起作用
【解决方案2】:

你好实际的问题在于语法,从版本到版本它一直在变化。

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic muleesb

对你有用

原因

对于kafka_2.11-2.1.0以上的kafka版本:./kafka-console-consumer.sh --bootstrap-server IP:PORT --from-beginning --topic TOPIC

对于 Kafka 版本 kafka_2.11_0.9.0.0 及以下:/kafka-console-consumer.sh --zookeeper IP:PORT --topic TOPIC --from-beginning --whitelist TOPIC

Exactly one of whitelist/blacklist/topic is required

【讨论】:

    【解决方案3】:

    正如 Harald 所说,使用白名单/黑名单选项来包含/排除一组主题以供消费。

    sh kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --whitelist Hello,World
    

    【讨论】:

    • 当我使用--bootstrap-server kafkaserver:9092 时,这对我不起作用。既然老消费者会被弃用,有没有办法让新消费者去打点呢?
    • @colin-SBI 您使用的是哪个 Kafka 版本?
    • kafka_2.11-0.11.0.1
    猜你喜欢
    • 2018-07-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    相关资源
    最近更新 更多