Connessione ad Apache Kafka in PHP

Mattepuffo's logo
Connessione ad Apache Kafka in PHP

Connessione ad Apache Kafka in PHP

In questo articolo vediamo come connetterci, inviare e ricevere dati da Apache Kafka In PHP.

Do per scontate che lo abbiate già installato e configurato.

Volendo potete usare anche docker (come in effetti ho fatto io).

Prima di tutto dobbiamo installare alcune cose a sistema; nel mio caso si tratta di Debian:

$ sudo apt-get install librdkafka-dev php-dev
$ sudo pecl install rdkafka

E poi aggiungete extension=rdkafka.so al php.ini.

A questo punto dobbiamo installare una libreria, e possiamo farlo con composer:

composer require kwn/php-rdkafka-stubs

Qui sotto un pò di codice:

$topic = 'test-topic';
$host = 'localhost:9092';

// PRODUCER
$conf = new RdKafka\Conf();
$conf->set('metadata.broker.list', $host);

$producer = new RdKafka\Producer($conf);
$topicProducer = $producer->newTopic($topic);

$topicProducer->produce(RD_KAFKA_PARTITION_UA, 0, 'valore1', 'chiave1');
$producer->flush(10000);

echo "Messaggio inviato!<br>";

sleep(2);

// CONSUMER
$conf = new RdKafka\Conf();
$conf->set('metadata.broker.list', $host);
$conf->set('group.id', 'test-group');
$conf->set('auto.offset.reset', 'earliest');

$consumer = new RdKafka\KafkaConsumer($conf);
$consumer->subscribe([$topic]);

echo "Consumer avviato, in ascolto...<br>";

while (true) {
    $message = $consumer->consume(120 * 1000);
    
    if ($message->err === RD_KAFKA_RESP_ERR_NO_ERROR) {
        printf("Chiave: %s, Valore: %s<br>", $message->key, $message->payload);
        break;
    }
}

$consumer->close();

Enjoy!


Condividi

Commentami!