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 makes it easy to produce and consume Kafka messages in Laravel with a clean, expressive API and improved testability. Build producers and consumers quickly, integrate with your app workflows, and avoid painful Kafka testing setups.

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.
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope
anil/file-picker
broqit/fields-ai