Kafka:如何显示偏移

时间:2018-08-28 22:56:45

标签: apache-kafka kafka-consumer-api

我是Kafka的新手。我已经在Mac上使用自制软件安装了kafka和zookeeper,并且正在使用the quickstart guide

我已经可以使用以下命令和STDIN将消息推送到Kafka上

kafka-console-producer --broker-list localhost:9092 --topic test

我可以使用来读东西

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --from-beginning

我不清楚我如何使用偏移量。据我了解,添加到主题的每条消息都将具有一个数字增量偏移值。但是,如果我尝试做这样的事情

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --offset 1

我得到一个非零的状态代码,并且没有显示任何消息(通常的帮助/使用信息除外)

我也无法使用最新最早关键字

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --offset earliest
kafka-console-consumer --bootstrap-server localhost:9092 --topic test --offset latest

以上两种方法都还返回非零状态代码。

我是否从根本上误解了补偿?如果不是,是否有办法列出所有带有 偏移量的消息?最后---offset的{​​{1}}标志最简单的例子是什么?

5 个答案:

答案 0 :(得分:2)

kafkacat是一个不错的命令行工具,可以显示每条消息的偏移量。

kafkacat -b localhost:9092 -C -t test -f 'Topic %t [%p] at offset %o: key %k: %s\n'

它将打印出类似的内容

Topic test [5] at offset 111: key "0171bf8102007900e33": {"Message": "1"} 
Topic test [2] at offset 123: key "070021b0f001f614c1b": {"Message": "2"}

答案 1 :(得分:2)

由于 GetOffsetShell 只有 works with PLAINTEXT,所以对很多人来说可能不方便。
好消息是,基于 9099 PR 中的通信,包括 print.offset 在内的其他属性似乎已进入 2.7。
现在必须可以使用 print.offset=true

答案 2 :(得分:1)

如果您在给出偏移量值后查看输出,则表明您需要指定一个分区(在帮助部分的顶部)

主题细分为多个分区,偏移量1只能存在于潜在的数百个分区中,因此必须指定

关于显示偏移量,查找GetOffsetShell命令语法

答案 3 :(得分:0)

使用偏移量时需要分区

<?php
   if(!require_once('conn.php'))
   {
       die("Error");
   }

   $upit = "SELECT * FROM artikal INNER JOIN category ON id_category = category.id
                                    INNER JOIN store ON id_store = store.id
        " ;
   $rezultat = $conn->query($upit);    
?>
                   <?php while($red = $rezultat->fetch_assoc()) { ?>
                   <tr>
                       <td><?= $red['product_name']; ?></td>
                       <td><?= $red['id_category']; ?></td>
                       <td><?= $red['id_store']; ?></td>
                       <td><?= $red['regular_price']; ?>$</td>
                       <td><?= $red['sale_price']; ?>$</td>
                       <td>**percentage discount I need here**</td>
                   </tr>
               <?php } ?>

答案 4 :(得分:0)

你必须像这样在上面的命令中给出分区值和偏移量

kafka-console-consumer --bootstrap-server localhost:9092 --topic test --partition 0 --offset 1