Я изучаю способ создания сообщений avro с php на kafka, используя php-enqueue .
В их документации указано, что вы можете использовать другие форматы, включая Apache Avro.
По умолчанию транспорт сериализует сообщения в формате json, но вы можете использовать другой формат, например Apache Avro. Для этого вам нужно реализовать интерфейс Serializer и установить его в контекст, производителя или потребителя. Если сериализатор настроен на контекст, он будет введен всем потребителям и производителям, созданным контекстом.
<?php use Enqueue\RdKafka\Serializer; use Enqueue\RdKafka\RdKafkaMessage; class FooSerializer implements Serializer { public function toMessage($string) {} public function toString(RdKafkaMessage $message) {} } /** @var \Enqueue\RdKafka\RdKafkaContext $context */ $context->setSerializer(new FooSerializer());
Сериализатор в примере преобразует в строки и обратно. Насколько я понимаю, формат Avro является двоичным, так как же в этом случае должен работать пользовательский сериализатор?