1. Go to this page and download the library: Download ananiaslitz/hyperf-avro library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Ananiaslitz\HyperfAvro\KafkaAvroSerializer;
class UserProducer
{
public function __construct(private KafkaAvroSerializer $avro) {}
public function send(array $userData)
{
// encode() registra/busca o schema, resolve o ID e retorna o binário (wire format)
$payload = $this->avro->encode($userData, 'user-events-value');
// Agora envie $payload via hyperf/kafka ou similar
}
}
use Ananiaslitz\HyperfAvro\KafkaAvroSerializer;
class UserConsumer
{
public function __construct(private KafkaAvroSerializer $avro) {}
public function onMessage(string $value)
{
// decode() lê o ID, busca o schema no registry (cached) e deserializa os dados
$data = $this->avro->decode($value);
// $data['username']...
}
}
use Ananiaslitz\HyperfAvro\Annotation\AvroDeserialize;
class EventConsumer
{
#[AvroDeserialize(schema: 'user-events-value')]
public function handle(string $payload): void
{
// $payload já chega como array associativo
}
}
use Ananiaslitz\HyperfAvro\Exception\AvroSerializationException;
try {
$payload = $avro->encode($data, 'subject');
} catch (AvroSerializationException $e) {
// Erro no registry, schema incompatível ou payload inválido
}