mateusjunges/laravel-kafka
Laravel Kafka brings a clean Laravel-friendly API for producing and consuming Kafka messages, with an emphasis on developer experience and easier testing. Ideal for integrating Kafka streams and event-driven workflows into your Laravel applications.
In kafka, you can configure your payload with a message, message headers and message key. All these configurations are available within ProducerBuilder class.
<x-sponsors.request-sponsor/>
To configure the message headers, use the withHeaders method:
use Junges\Kafka\Facades\Kafka;
Kafka::publish('broker')
->onTopic('topic')
->withHeaders([
'header-key' => 'header-value'
])
You can configure the message with the withMessage or withBodyKey methods.
The withMessage sets the entire message, and it accepts a Junges\Kafka\Message\Message::class instance as argument.
This is how you should use it:
use Junges\Kafka\Facades\Kafka;
use Junges\Kafka\Message\Message;
$message = new Message(
headers: ['header-key' => 'header-value'],
body: ['key' => 'value'],
key: 'kafka key here'
)
Kafka::publish('broker')->onTopic('topic')->withMessage($message);
The withBodyKey method sets only a key in your message.
use Junges\Kafka\Facades\Kafka;
Kafka::publish('broker')->onTopic('topic')->withBodyKey('key', 'value');
In Kafka, keys are used to determine the partition within a log to which a message get's appended to.
If you want to use a key in your message, you should use the withKafkaKey method:
use Junges\Kafka\Facades\Kafka;
Kafka::publish('broker')->onTopic('topic')->withKafkaKey('your-kafka-key');
How can I help you explore Laravel packages today?