Laravel
Laravel

How to implement real-time database CDC with Debezium Kafka for Laravel microservices?

December 3, 2025

Debezium captures PostgreSQL/MySQL binlog changes streaming row-level INSERT/UPDATE/DELETE events to Kafka topics with before/after states. Laravel Outbox pattern atomically queues domain events in database transactions ensuring exactly-once delivery. Horizon consumers process Kafka messages updating search indexes, caches, analytics projections. Enables CQRS eventual consistency across microservices without dual writes or distributed transactions.

Example:-

Code

/ 1. Debezium connector config (docker-compose)
debezium:
  image: debezium/connect
  environment:
    BOOTSTRAP_SERVERS: kafka:9092
    CONNECTOR_NAME: orders-cdc
    DATABASE_SERVER_NAME: orders
    TABLE_INCLUDE_LIST: orders.order

// 2. Laravel Outbox Event
class OrderPlaced 
{
    use Dispatchable, InteractsWithQueue;
    
    public function handle(KafkaConsumer $consumer)
    {
        $cdcEvent = $consumer->poll('orders.order');
        if ($cdcEvent->op === 'c') {
            Cache::put("order:{$cdcEvent->after->id}", $cdcEvent->after);
            SearchIndex::upsert($cdcEvent->after);
        }
    }
}

// 3. Horizon consumer
Horizon::addListener(CdcProcessor::class);
      
Hire Now!

Need Help with Laravel Development ?

Ready to leverage the power of conversational AI? Start your project with Zignuts expert AI developers.
bg-image
download-image
Company Deck
PDF, 3MB
© 2026 Zignuts Technolab. All Rights Reserved.
branch imagesbranch imagesbranch imagesbranch imagesbranch imagesbranch images