Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Kafka Laravel Package

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.

View on GitHub
Deep Wiki
Context7

title: Consumer groups weight: 4

Kafka consumers belonging to the same consumer group share a group id. The consumers in a group divides the topic partitions as fairly amongst themselves as possible by establishing that each partition is only consumed by a single consumer from the group.

<x-sponsors.request-sponsor/>

To attach your consumer to a consumer group, you can use the method withConsumerGroupId to specify the consumer group id:

use Junges\Kafka\Facades\Kafka;

$consumer = Kafka::consumer()->withConsumerGroupId('foo');

Kafka Consumer Group Rebalancing

Watch how Kafka automatically redistributes partitions among consumers when the consumer group changes. Add or remove consumers to see the rebalancing process in action.

<x-docs.animation.rebalance />

Partition Assignment Strategies

You can configure how Kafka assigns partitions to consumers in your consumer group by specifying a rebalance strategy:

use Junges\Kafka\Facades\Kafka;
use Junges\Kafka\Config\RebalanceStrategy;

$consumer = Kafka::consumer()
    ->withConsumerGroupId('my-group')
    ->withRebalanceStrategy(RebalanceStrategy::ROUND_ROBIN);

Available Strategies

  • Range (RebalanceStrategy::RANGE): Default strategy. Assigns partitions on a per-topic basis by dividing partitions evenly among consumers.
  • Round Robin (RebalanceStrategy::ROUND_ROBIN): Distributes partitions evenly across all consumers in a round-robin fashion.
  • Sticky (RebalanceStrategy::STICKY): Maintains balanced assignments while preserving existing assignments during rebalancing.
  • Cooperative Sticky (RebalanceStrategy::COOPERATIVE_STICKY): Same as sticky but allows cooperative rebalancing for reduced downtime.

Examples

// Using Range strategy (default)
$consumer = Kafka::consumer()
    ->withConsumerGroupId('my-group')
    ->withRebalanceStrategy(RebalanceStrategy::RANGE);

// Using Round Robin for better distribution
$consumer = Kafka::consumer()
    ->withConsumerGroupId('my-group')
    ->withRebalanceStrategy(RebalanceStrategy::ROUND_ROBIN);

// Using Sticky for minimal disruption during rebalancing
$consumer = Kafka::consumer()
    ->withConsumerGroupId('my-group')
    ->withRebalanceStrategy(RebalanceStrategy::STICKY);

// Using Cooperative Sticky for minimal downtime
$consumer = Kafka::consumer()
    ->withConsumerGroupId('my-group')
    ->withRebalanceStrategy(RebalanceStrategy::COOPERATIVE_STICKY);

You can also pass strategy names as strings:

$consumer = Kafka::consumer()
    ->withConsumerGroupId('my-group')
    ->withRebalanceStrategy('sticky');

Or set the strategy using raw options:

$consumer = Kafka::consumer()
    ->withConsumerGroupId('my-group')
    ->withOption('partition.assignment.strategy', 'sticky');
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport