Saltearse al contenido

Configuration des webhooks (Queues)

Jambo utilise Symfony Messenger pour traiter les webhooks et autres tâches asynchrones en arrière-plan. Sans un worker en cours d’exécution, ces tâches s’accumulent dans la queue sans jamais être traitées.

Configurer le transport

Dans .env :

# Recommandé pour la production : transport doctrine (fiable)
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
# Redis (plus rapide, nécessite un serveur Redis)
MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages

Pour le transport doctrine, créez la table de queue :

Ventana de terminal
php bin/console messenger:setup-transports

Lancer le worker

Ventana de terminal
php bin/console messenger:consume async --time-limit=3600

Production : Supervisor

[program:jambo-worker]
command=php /var/www/jambo-api/bin/console messenger:consume async --time-limit=3600
user=www-data
numprocs=2
autostart=true
autorestart=true
Ventana de terminal
supervisorctl reread && supervisorctl update && supervisorctl start jambo-worker:*

Vérifier la signature des webhooks

Chaque requête webhook inclut un header X-Jambo-Signature :

$signature = 'sha256=' . hash_hmac('sha256', $rawBody, $secret);
if (!hash_equals($signature, $request->headers->get('X-Jambo-Signature'))) {
// Signature invalide — rejeter la requête
}