Aller au contenu
Krizaka Java
Krizaka Java

Notifications

krizaka-notifications — e-mail, SMS et webhooks derrière un seul port, pilotés par des événements ; des modèles par langue.

krizaka-notifications envoie des notifications selon le canal. Les applications ne parlent jamais à un serveur SMTP ni à un fournisseur de SMS : elles publient un événement, ce service compose et livre.

Canaux

CanalAdaptateurConfigurationDisponible quand
EMAILSMTPMAIL_HOST, MAIL_PORT, MAIL_USERNAME, MAIL_PASSWORD (par défaut, un Mailpit local)toujours
SMSAPI Messages de TwilioTWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_FROM_NUMBERles trois sont définis
WEBHOOKHTTP POST de {template, subject, body}NOTIFICATIONS_WEBHOOK_ALLOWED_HOSTSla liste d'autorisation n'est pas vide

Une demande pour un canal indisponible échoue et part en dead-letter — jamais abandonnée en silence. Les modèles vivent dans templates/<template>/<locale>.txt (Subject: en première ligne, variables {{variable}}, repli sur en) ; pointe NOTIFICATIONS_TEMPLATES vers un dossier pour les habiller à ta marque sans reconstruire.

Ce qui déclenche une notification

Clé de routageCe qui est envoyé
evt.user.registerede-mail de vérification
evt.password.resete-mail de réinitialisation du mot de passe
evt.notification.requestedtoute NotificationRequest (canal, destinataire, modèle, variables)

Chaque file a sa file de dead-letter, les rejeux temporisent de façon exponentielle et les livraisons sont idempotentes par messageId (messagerie).

Demander une notification

pom.xml
<dependency>
  <groupId>com.krizaka</groupId>
  <artifactId>krizaka-notifications-api</artifactId>
  <version>0.1.0</version>
</dependency>

Publie une NotificationRequest en JSON sur l'exchange d'événements avec la clé de routage evt.notification.requested et un messageId — une redélivrance n'est alors envoyée qu'une fois. Le JSON Schema de la demande est livré dans krizaka-notifications-api sous events/evt.notification.requested.v1.json.

La configuration complète et les instructions d'exécution sont dans le README du dépôt.

Sur cette page