Run the 15-min payment-expiry every minute through Symfony Scheduler so unpaid pending bookings flip to expired without a system crontab. Install symfony/scheduler; extract the expiry logic into AppointmentExpiryService (reused by the existing command); add ExpireAppointmentsMessage + handler and an #[AsSchedule] provider (RecurringMessage::every 1 minute); wire a scheduler_default transport in messenger.yaml. Slots already free just-in-time via isSlotTaken, so this only syncs the DB status. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
26 lines
722 B
YAML
26 lines
722 B
YAML
framework:
|
|
messenger:
|
|
failure_transport: failed
|
|
|
|
transports:
|
|
async:
|
|
dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
|
|
retry_strategy:
|
|
max_retries: 3
|
|
delay: 5000
|
|
multiplier: 2
|
|
failed: 'doctrine://default?queue_name=failed'
|
|
sync: 'sync://'
|
|
scheduler_default:
|
|
dsn: 'schedule://appointment_expiry'
|
|
|
|
routing:
|
|
'App\Shared\Message\SendSmsMessage': async
|
|
'App\Appointment\Message\ExpireAppointmentsMessage': scheduler_default
|
|
|
|
when@test:
|
|
framework:
|
|
messenger:
|
|
transports:
|
|
async: 'in-memory://'
|