flexway
FRENParler à un expert

Publier et s'abonner

GuideDéveloppeursDepuis la version 1.5.0

Markdown

Sur cette page

Publier un évènement par HTTP, et recevoir ceux de votre tenant en SSE ou en WebSocket - sans client du courtier. Les messages sont des CloudEvents 1.0.

Côté produit : Plan asynchrone et courtiers ; côté exploitation : Publier et consommer sur un courtier.

Publier

curl -i -X POST https://api.example.com/orders/events -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' -H 'Idempotency-Key: order-42' -d '{"orderId":"42"}'
# HTTP/1.1 202 Accepted   {"id":"order-42"}
Réponse Sens Que faire
202 Le courtier a accusé le message Rien
428 idempotency_key_required La porte exige Idempotency-Key L'ajouter
504 upstream_timeout Issue inconnue : le message a peut-être été écrit Renvoyer avec la même Idempotency-Key - elle devient l'id, les consommateurs dédupliquent
503 overloaded Tampon de la passerelle plein Attendre Retry-After
503 upstream_unavailable Courtier injoignable Attendre Retry-After
400 Vous avez envoyé un en-tête ce-* : les attributs sont ceux de la passerelle Le retirer
415, 422 Corps d'un autre type, ou hors schéma Corriger

Le tenant, l'id, la source et la trace sont posés par la passerelle. L'ordre n'est garanti que par clé de message.

S'abonner en SSE

curl -N https://api.example.com/orders/stream -H "Authorization: Bearer $TOKEN" -H 'Accept: text/event-stream'
# id: 0:18,1:7,2:11
# event: created
# data: {"specversion":"1.0","id":"order-42","tenant":"acme","data":{"orderId":"42"},...}
Règle Détail
Reprise Revenez avec Last-Event-ID : la lecture reprend dans l'historique récent du canal
Hors historique 412 precondition_failed : rouvrez sans Last-Event-ID
Abonné trop lent Fermé (event: error, overloaded)
Nombre de flux Plafonné par appelant
Charges binaires Reçues en JSON (datacontenttype: application/json)

S'abonner en WebSocket

Chaque message est un CloudEvent JSON ; accusez-le dans le délai annoncé :

ws.onmessage = (m) => {
  const ev = JSON.parse(m.data);
  handle(ev);
  ws.send(JSON.stringify({ ack: ev.id }));
};
Fermeture Sens
1008 Refus, ou accusé manquant dans le délai : le message sera relivré à la reconnexion (au moins une fois)
1011 Courtier en panne : reconnectez-vous après un délai
1013 Abonné trop lent

Le dernier message avant la fermeture porte le problème RFC 9457. Dédupliquez sur source + id.

Étapes suivantes