artox-lab/clarc-message-bus-bundle
messenger component, which is compatible with Laravel’s event system (via bridges like symfony/messenger or custom implementations). However, Laravel’s native event system is simpler, so this may introduce unnecessary complexity unless event sourcing/CQRS is a core requirement.abstract-bus-event-message), which is valuable for complex domains but may feel over-engineered for simpler Laravel apps.symfony/messenger (not natively in Laravel). Possible via:
old_sound_rabbit_mq or Symfony’s amqp-transport). Laravel projects might prefer database queues, Redis, or Pusher.artox_lab_clarc_message_bus.transport.bus_serializer), which may conflict with Laravel’s native JSON serialization or packages like spatie/laravel-activitylog.symfony/messenger:^5.0 may not align with Laravel’s ecosystem).rabbitmq:setup-fabric) is error-prone and non-portable.Event classes.Event system suffice?spatie/laravel-event-sourcing or a custom message bus be simpler?spatie/laravel-activitylog?spatie/laravel-messenger) or custom adapters are needed.symfony/messenger and spatie/laravel-messenger:
composer require symfony/messenger spatie/laravel-messenger
config/messenger.php to match the bundle’s structure.BusEventMessage:
// Example: Event to BusEventMessage converter
use ArtoxLab\AbstractBusEventMessage\V1\BusMessageInterface;
class LaravelEventToBusMessageConverter
{
public function convert(\Symfony\Component\EventDispatcher\Event $event): BusMessageInterface
{
return new YourLib\BusEventMessage\V1\BusMessage(
$event->getName(),
$event->getArguments()
);
}
}
database):
# config/packages/messenger.yaml
transports:
async:
dsn: 'doctrine://default'
serializer: messenger.transport.symfony_serializer
spatie/laravel-messenger to bridge Symfony Messenger with Laravel Queues.| Feature | Compatibility Notes |
|---|---|
| Laravel Events | Requires custom mapping to BusEventMessage. |
| Service Container | Works with Symfony’s DI; Laravel’s container may need adapters. |
| Queues | RabbitMQ is hardcoded; Laravel’s queue drivers need custom transport adapters. |
| Middleware | Supports Symfony Messenger middleware (e.g., add_redelivery_stamp_middleware). |
| Validation | Uses Symfony Validator; Laravel’s validator may need integration. |
OrderCreated) using the bundle.retry_strategy).rabbitmq:setup-fabric).| Scenario | Impact | Mitigation Strategy |
|---|---|---|
| RabbitMQ Down | Events lost if not persisted (e.g., no dead-letter queue). | Use persistent queues and retry policies. |
| Serialization Errors | Events fail silently or corrupt. | Add validation middleware and logging. |
| Middleware Failures | Retry logic may loop indefinitely. | Configure max retries and circuit breakers. |
| Laravel Queue Driver Issues | If migrating to Laravel queues, driver-specific bugs may arise. | Test with database/Redis queues and monitor failures. |
| Package Abandonment | No updates for critical vulnerabilities. | Fork the repo or replace with spatie/laravel-event-sourcing. |
How can I help you explore Laravel packages today?