22Kafka\Configuration
33--SKIPIF--
44<?php
5- (!isset ($ _ENV ['TESTS_DONT_SKIP_RISKY ' ]) || $ _ENV ['TESTS_DONT_SKIP_RISKY ' ]) && die ("skip Risky/broken test " );
65require __DIR__ . '/integration-tests-check.php ' ;
76--FILE --
87<?php
98require __DIR__ . '/integration-tests-check.php ' ;
109
1110$ conf = new Kafka \Configuration ();
12-
13- $ conf ->set ('auto.offset.reset ' , 'earliest ' );
1411$ conf ->set ('metadata.broker.list ' , getenv ('TEST_KAFKA_BROKERS ' ));
1512
16- $ conf ->set ('group.id ' , sprintf ("test_kafka_group_%s " , uniqid ()));
13+ $ delivered = 0 ;
14+ $ conf ->setDrMsgCb (function (Kafka \Producer $ producer , Kafka \Message $ message ) use (&$ delivered ) {
15+ if (RD_KAFKA_RESP_ERR_NO_ERROR !== $ message ->err ) {
16+ $ errorStr = rd_kafka_err2str ($ message ->err );
17+
18+ echo sprintf ('Message FAILED (%s, %s) to send with payload => %s ' , $ message ->err , $ errorStr , $ message ->payload ) . PHP_EOL ;
19+ } else {
20+ // message successfully delivered
21+ ++$ delivered ;
22+ }
23+ });
1724
1825$ producer = new Kafka \Producer ($ conf );
1926
@@ -22,20 +29,18 @@ $topic = $producer->getTopicHandle($topicName);
2229
2330for ($ i = 0 ; $ i < 10 ; $ i ++) {
2431 $ topic ->produce (0 , 0 , "message $ i " );
25- $ producer ->poll (0 );
2632}
2733
2834$ producer ->flush (10000 );
2935
30- // Make sure there is enough time for the stats_cb to pick up the consumer lag
31- sleep (1 );
32-
3336$ conf = new Kafka \Configuration ();
34-
3537$ conf ->set ('auto.offset.reset ' , 'earliest ' );
3638$ conf ->set ('metadata.broker.list ' , getenv ('TEST_KAFKA_BROKERS ' ));
3739$ conf ->set ('group.id ' , sprintf ("test_kafka_group_%s " , uniqid ()));
40+ $ conf ->set ('enable.partition.eof ' , 'true ' );
3841$ conf ->set ('statistics.interval.ms ' , 10 );
42+ $ conf ->set ('log_level ' , (string ) LOG_DEBUG );
43+ $ conf ->set ('debug ' , 'all ' );
3944
4045$ conf ->setOffsetCommitCb (function ($ consumer , $ error , $ topicPartitions ) {
4146 echo "Offset " . $ topicPartitions [0 ]->getOffset () . " committed. \n" ;
@@ -50,13 +55,43 @@ $conf->setStatsCb(function ($consumer, $json) use (&$statsCbCalled) {
5055 $ statsCbCalled = true ;
5156});
5257
58+ $ logCbCalled = false ;
59+ $ conf ->setLogCb (function (Kafka \Consumer $ consumer , int $ level , string $ facility , string $ message ) use (&$ logCbCalled ) {
60+ // suppress current bug in librdkafka https://github.com/edenhill/librdkafka/issues/2767
61+ $ logCbCalled = true ;
62+ });
63+
64+ $ conf ->setErrorCb (function ($ kafka , int $ errorCode , string $ reason ) {
65+ // suppress current bug in librdkafka https://github.com/edenhill/librdkafka/issues/2767
66+ });
67+
68+ $ topicsAssigned = false ;
69+ $ conf ->setRebalanceCb (
70+ function (Kafka \Consumer $ kafka , $ err , array $ partitions = null ) use (&$ topicsAssigned ){
71+ switch ($ err ) {
72+ case RD_KAFKA_RESP_ERR__ASSIGN_PARTITIONS :
73+ $ kafka ->assign ($ partitions );
74+ $ topicsAssigned = true ;
75+ break ;
76+
77+ case RD_KAFKA_RESP_ERR__REVOKE_PARTITIONS :
78+ $ kafka ->assign (NULL );
79+ break ;
80+
81+ default :
82+ $ kafka ->assign (NULL ); // sync state
83+ break ;
84+ }
85+ }
86+ );
87+
5388$ consumer = new Kafka \Consumer ($ conf );
5489$ consumer ->subscribe ([$ topicName ]);
5590
5691while (true ) {
5792 $ msg = $ consumer ->consume (15000 );
5893
59- if (! $ msg || RD_KAFKA_RESP_ERR__PARTITION_EOF === $ msg ->err ) {
94+ if (RD_KAFKA_RESP_ERR__PARTITION_EOF === $ msg ->err ) {
6095 break ;
6196 }
6297
@@ -68,6 +103,9 @@ while (true) {
68103}
69104
70105var_dump ($ statsCbCalled );
106+ var_dump ($ logCbCalled );
107+ var_dump ($ topicsAssigned );
108+ var_dump ($ delivered );
71109
72110--EXPECT --
73111Offset 1 committed.
@@ -81,3 +119,6 @@ Offset 8 committed.
81119Offset 9 committed.
82120Offset 10 committed.
83121bool(true)
122+ bool(true)
123+ bool(true)
124+ int(10 )
0 commit comments