在命令行中在Kafka中创建多个使用者

时间:2014-10-09 23:22:20

标签: apache-kafka

我是卡夫卡的新人。当我在命令行中运行快速启动示例时,我发现我无法在命令行中创建多个使用者。

条件:

我构建了一个名为test的主题,包含3个分区,我还在这个主题上构建了一个生产者。

然后我想创建两个不同的消费者,在这个主题上共享一个名为test1的同一消费者组。

我按如下方式运行了两次命令:

   bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --group test1

第一个工作但是当我第二次跑时,第一个断开,第二个工作。

那么如何在命令行中的同一个使用者组中创建两个或更多个使用者呢?

    WARN Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect (org.apache.zookeeper.ClientCnxn)
java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739)
    at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1146)

5 个答案:

答案 0 :(得分:17)

  1. 默认情况下,kafka-console-consumer.sh会创建一个随机组。
  2. 如果要指定组名,您可以:
    1. group.id=group_name添加到本地文件filename
    2. 使用--consumer.config filename的{​​{1}}选项设置论坛
  3. 您可以在zookeeper的kafka-console-consumer.sh目录中查看您的论坛。
  4. 参考:kafka/core/src/main/scala/kafka/tools/ConsoleConsumer.scala

答案 1 :(得分:17)

除了使用--consumer.config选项,如secfree的答案,您还可以使用

  

--consumer-property group.id=your_group

选项指定组名而不编辑配置文件。

答案 2 :(得分:6)

您可以使用以下命令在组" test-consumer-group"中创建消费者。到"测试"主题:

bin/kafka-console-consumer.sh --bootstrap-server <brokerIP>:9092 --topic test --consumer-property group.id=test-consumer-group

下面的命令将列出使用者组配置:

bin/kafka-consumer-groups.sh --bootstrap-server <brokerIP>:9092 --describe --group test-consumer-group

例如:

GROUP || TOPIC || PARTITION || CURRENT-OFFSET || LOG-END-OFFSET || LAG      || OWNER
test-consumer-group || test || 0 || 10 || 10 || 0 || consumer-1_/10.210.223.170

答案 3 :(得分:1)

使用它:

$price = array_column($products, "price");
$quantity = array_column($products, "quantity");

$total = array_sum(array_map(function($x, $y) { return $x * $y; },
               $price, $quantity));
Echo $total;

答案 4 :(得分:0)

When you consume Topic without groupid Kafka create random groupid for your session. You can specify groupid --consumer-property group.id=test-consumer-group if groupid exist or you can add to your session new groupid(name) when you consume if group not exist --topic second-topic --group my-first-group p and Kafka will create new group