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!
php composer kafka rdkafka
Commentami!