symfony/messenger via bridges like laravel-messenger).laravel-messenger or direct symfony/messenger integration).queue:work) would need adaptation to use Messenger’s Transport layer. Potential friction points:
MessageBus.Serializer vs. Laravel’s Illuminate\Support\SerializesAndDeserializes).aws/aws-sdk-php (v3). Ensure SDK version compatibility with Laravel’s PHP version (e.g., PHP 8.0+).kinesis:PutRecord, kinesis:GetRecords, etc. Must align with Laravel’s AWS credential management (e.g., env, aws-sdk-php config, or IAM roles for EC2/ECS).Envelope format. Laravel’s native queues use raw payloads; custom serialization/deserialization may be needed.QueueWorker or MessengerBus wrapper).failed:table vs. Kinesis’ native retries).LaravelKinesisTransport).symfony/messenger directly or bridge via laravel-messenger? What’s the trade-off in complexity?PutRecord latency, iterator age) in Laravel’s monitoring (e.g., Horizon, Datadog)?Core Stack:
symfony/messenger:^6.0 + aws/aws-sdk-php:^3.0.kinesis:* actions.laravel-messenger (if using Laravel’s queue system) or direct symfony/messenger integration.KinesisTransport wrapper to bridge Laravel’s Queue facade.Alternatives Considered:
database/redis queues may suffice for lower throughput.Phase 1: Proof of Concept (PoC)
cvek/messenger-kinesis package with a single message type (e.g., SendEmailMessage).php artisan messenger:consume kinesis).Phase 2: Laravel Integration
laravel-messenger as a bridge to expose Messenger’s Transport to Laravel’s Queue facade.
Illuminate\Queue\QueueManager to register a kinesis connection.KinesisQueue class extending Laravel’s Queue base class, wrapping the Messenger transport.queue:work to consume from Kinesis (may require a custom worker script).Phase 3: Production Readiness
IncomingBytes, IteratorAge) into Laravel’s monitoring.symfony/messenger:^6.0.MessageBus and Transport in Laravel’s container.messenger:consume for Kinesis-specific flags (e.g., --stream-name).aws/aws-sdk-php:^3.0 matches Laravel’s PHP version (e.g., PHP 8.1+).Envelope).symfony/messenger, cvek/messenger-kinesis, aws/aws-sdk-php).Transport and MessageBus in Laravel.bus->dispatch($message).messenger:consume kinesis or custom worker.GetRecords.IteratorAgeMilliseconds) require custom instrumentation.How can I help you explore Laravel packages today?