alvarorosado/event-driven-kafka-messenger-transport
symfony/messenger) can integrate with this transport with minimal adjustments (e.g., replacing Symfony’s Envelope with Laravel’s Envelope).rdkafka, a robust and widely adopted Kafka client for PHP, ensuring stability and performance.KafkaTransportHookInterface, allowing custom logic for preprocessing/production and postprocessing/consumption.KafkaIdentifierStamp and KafkaTransportHookInterface for JSON serialization and routing, adding complexity for basic use cases.Envelope system, requiring adapter layers or custom middleware.laravel-messenger) that could conflict or require adaptation?rdkafka/rdkafka: For Kafka client functionality.symfony/messenger: Core messaging framework (Laravel’s Messenger is a wrapper around this).symfony/serializer for custom JSON serialization.ed+kafka:// DSN prefix to avoid conflicts).Envelope to Laravel’s Envelope (e.g., via middleware or custom transport layer). May need to override MessageBus or Transport classes.rdkafka.rdkafka PHP extension (e.g., pecl install rdkafka).php-kafka/kafka) via DSN prefixing.group.id, auto.offset.reset).config/packages/event_driven_kafka_transport.yaml.config/packages/messenger.yaml.identifier() and optional key() methods.KafkaTransportHookInterface for advanced use cases.event_driven_kafka_transport.yaml) reduces drift but requires discipline to update shared settings.rdkafka and symfony/messenger for breaking changes, especially around serialization or transport APIs.kafka-console-consumer, kafkacat) and rdkafka logs.Envelope, Transport).enable.idempotence in producer config).kafka-consumer-groups for lag; adjust consume_timeout_ms or consumer count.compression.type).batch.size or max.bytes.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Kafka Broker Unavailable | Messages cannot be produced/consumed. | Use retry logic in failure transport; implement circuit breakers. |
| Consumer Group Rebalance | Temporary lag during rebalancing. | Set session.timeout.ms and heartbeat.interval.ms appropriately. |
| Serialization Errors | Messages fail to produce/consume. | Validate message classes; use custom serializers for complex types. |
| Failure Transport Overload | Retries pile up, delaying processing. | Scale failure transport (e.g., DBAL/Redis); monitor retry queues. |
| Duplicate Messages | Idempotent operations may process duplicates. | Design messages to be idempotent; use Kafka’s enable.idempotence. |
| Topic Permissions | Consumers/producers lack access to topics. | Audit Kafka ACLs; use service accounts with least privilege. |
| Schema Evolution | New message fields break consumers. | Use schema registry (e.g., Confluent Schema Registry) or backward-compatible changes. |
How can I help you explore Laravel packages today?