Paragraphe d'utilisation
onStart / onMessage
Syntaxe
BRK_REPONSE NomPropriétéAlpha SuiteParamètres
SuiteParamètres
| → | SuiteParamètres Paramètre | Paramètre | Rien |
Paramètre | → | <variable paramètre> | <littéral paramètre> |
Description
Cet ordre permet de fixer des informations sur la réponse à retourner en fin de paragraphe onStart/onMessage.
Dans un paragraphe onStart
Un programme EADELIA offre la possibilité à l'utilisateur lors de l'exécution du paragraphe onStart de stopper le démarrage du souscripteur : l'ordre BRK_REPONSE permet d'acquitter positivement ou négativement l'événement ON_START.
Dans la cas d'un acquittement négatif, les événements ON_ERROR et ON_STOP sont envoyés au souscripteur : les paragraphes onError et onStop sont exécutés et le souscripteur est arrêté avant de s'abonner aux topics définis.
Par défaut, en l'absence d'acquittement explicite de la part de l'utilisateur, le programme EADELIA acquitte positivement l'événement ON_START et le souscripteur est démarré.
Acquittement positif
BRK_REPONSE '*ACK'
Acquittement négatif
BRK_REPONSE '*NACK'
Remarque :
Cet acquittement est pris en compte en fin de paragraphe onStart.
Seule la dernière valeur d'acquittement (le dernier ordre BRK_REPONSE exécuté) est pris en compte.
Dans un paragraphe onMessage
Cet ordre permet de fixer une réponse suite au traitement du message courant dans le paragraphe onMessage :
- il est possible d'arrêter le souscripteur à la fin du traitement du message courant,
- suivant la nature du courtier, il possible d'acquitter positivement ou négativement le message.
Stopper le souscripteur
La demande d'arrêt se traduit par l'envoi d'un événement ON_STOP au souscripteur (le paragraphe onStop est exécuté). Suivant le courtier, il est possible de particulariser le processus d'arrêt du souscripteur :
Kafka
Kafka |
---|
BRK_REPONSE '*STOP' | Suivant la valeur de la clé "subconf/config/brokerConfig/subscribeTopic/stopImmediate", stoppe le souscripteur à la fin du paragraphe onMessage du message courant ou du dernier message du lot récupéré au dernier appel de la fonction poll. |
MQTT v3
MQTT v3 |
---|
BRK_REPONSE '*STOP' | Stoppe le souscripteur à la fin du paragraphe onMessage du message courant. Comme la demande d'arrêt du consommateur est faite en asynchrone, il est possible qu'un ou plusieurs messages soient envoyés au souscripteur avant sa fermeture. |
MQTT v5
MQTT v5 |
---|
BRK_REPONSE '*STOP' | Stoppe le souscripteur à la fin du paragraphe onMessage du message courant. Comme la demande d'arrêt du consommateur est faite en asynchrone, il est possible qu'un ou plusieurs messages soient envoyés au souscripteur avant sa fermeture. |
Nats Jetstream
Nats Jetstream |
---|
BRK_REPONSE '*STOP' | Stoppe le souscripteur à la fin du paragraphe onMessage du message courant |
BRK_REPONSE '*STOP_AFTER_BATCH' | Stoppe le souscripteur à la fin du paragraphe onMessage du dernier message du lot récupéré au dernier appel de la fonction de récupération de messages (seulement si la clé "subconf/config/brokerConfig/subscribeTopic/subscribeType" vaut "Pull"). |
Remarque :
*STOP et *STOP_AFTER_BATCH sont exclusifs.
RabbitMQ AMQP
RabbitMQ AMQP |
---|
BRK_REPONSE '*STOP' | Stoppe le souscripteur à la fin du paragraphe onMessage du message courant. |
Redis Pub/Sub
Redis Pub/Sub |
---|
BRK_REPONSE '*STOP' | Stoppe le souscripteur à la fin du paragraphe onMessage du message courant. Comme la demande d'arrêt du consommateur est faite en asynchrone, il est possible qu'un ou plusieurs messages soient envoyés au souscripteur avant sa fermeture. |
Acquitter le message
La demande d'acquittement de message s'effectue au moment de l'appel de l'ordre BRK_REPONSE (contrairement à la demande d'acquittement dans le paragraphe onStart, qui est pris en compte à la fin de l'exécution du paragraphe).
De plus, cette demande n'est prise en compte que si le souscripteur a été défini avec un mode d'acquittement manuel et non automatique.
Suivant le courtier, il est possible de particulariser le processus d'acquittement de message :
Kafka
Kafka |
---|
BRK_REPONSE '*ACK' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/ackMode" vaut "MANUAL" ou "MANUAL_IMMEDIATE", acquitte positivement le message en cours de traitement (si la clé "subconf/config/brokerConfig/subscribeTopic/typeMsgHandling" vaut "SINGLE") ou la partie des messages traités dans le lot (si la clé "subconf/config/brokerConfig/subscribeTopic/typeMsgHandling" vaut "BATCH").
Kafka maintient dans les partitions la position du dernier message envoyé et le dernier message acquitté. L'acquittement peut se faire après chaque message traité ou après un certain nombre de messages traités : l'acquittement du dernier message traité acquittera les messages traités non encore validés. Dans la cas de traitement "BATCH" de messages, il est possible de savoir la position du message traité dans le lot grâce aux clés 'firstPolled' et 'lastPolled' associées au message.
|
BRK_REPONSE '*NACK' SleepTime SleepTime | → | <ConstanteNum> | <variable NUM_BIN_8> |
| Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/ackMode" vaut "MANUAL" ou "MANUAL_IMMEDIATE", acquitte négativement le message en cours de traitement (si la clé "subconf/config/brokerConfig/subscribeTopic/typeMsgHandling" vaut "SINGLE") ou la partie des messages traités dans le lot (si la clé "subconf/config/brokerConfig/subscribeTopic/typeMsgHandling" vaut "BATCH").
Le paramètre SleepTime indique le temps de veille du souscripteur afin de permette au courtier de gérer la réorganisation des messages à traiter. Le courtier redistribuera le(s) message(s) ultérieurement (au même souscripteur ou à un autre souscripteur du même groupe).
|
MQTT v3
MQTT v3 |
---|
BRK_REPONSE '*ACK' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/manualAcks" vaut *VRAI et que la qualité de service (QoS) du message est strictement supérieure à 0, acquitte positivement le message en cours de traitement. |
BRK_REPONSE '*NACK' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/manualAcks" vaut *VRAI et que la qualité de service (QoS) du message est strictement supérieure à 0, acquitte négativement le message en cours de traitement. Le courtier redistribuera le message ultérieurement.
|
MQTT v5
MQTT v5 |
---|
BRK_REPONSE '*ACK' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/manualAcks" vaut *VRAI et que la qualité de service (QoS) du message est strictement supérieure à 0, acquitte positivement le message en cours de traitement. |
BRK_REPONSE '*NACK' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/manualAcks" vaut *VRAI et que la qualité de service (QoS) du message est strictement supérieure à 0, acquitte négativement le message en cours de traitement. Le courtier redistribuera le message ultérieurement.
|
Nats Jetstream
Nats Jetstream |
---|
BRK_REPONSE '*ACK' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/pushSubOpts/consumerConfig/ackPolicy" ou "subconf/config/brokerConfig/subscribeTopic/pullSubOpts/consumerConfig/ackPolicy" vaut "All" ou "Explicit", acquitte (de manière asynchrone) positivement le message en cours de traitement ("Explicit") ou l'ensemble des messages du lot en cours de traitement ("All"). |
BRK_REPONSE '*NACK' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/pushSubOpts/consumerConfig/ackPolicy" ou "subconf/config/brokerConfig/subscribeTopic/pullSubOpts/consumerConfig/ackPolicy" vaut "All" ou "Explicit", acquitte négativement le message en cours de traitement ("Explicit") ou l'ensemble des messages du lot en cours de traitement ("All").
Le courtier redistribuera le(s) message(s) ultérieurement.
|
BRK_REPONSE '*ACK_SYNC' Timeout Timeout | → | <ConstanteNum> | <variable NUM_BIN_8> |
| Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/pushSubOpts/consumerConfig/ackPolicy" ou "subconf/config/brokerConfig/subscribeTopic/pullSubOpts/consumerConfig/ackPolicy" vaut "All" ou "Explicit", acquitte (de manière synchrone) positivement le message en cours de traitement ("Explicit") ou l'ensemble des messages du lot en cours de traitement ("All").
Le paramètre Timeout indique la durée d'attente (en nanosecondes) d'une confirmation de l'acquittement par le courtier. Une valeur de 0 permet de ne pas attendre la confirmation du courtier. |
BRK_REPONSE '*TERM' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/pushSubOpts/consumerConfig/ackPolicy" ou "subconf/config/brokerConfig/subscribeTopic/pullSubOpts/consumerConfig/ackPolicy" vaut "All" ou "Explicit", indique que vous n'avez pas réussi à traiter le message et demande au courtier de ne pas le renvoyer (à aucun consommateur). |
BRK_REPONSE '*IN_PROGRESS' | Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/pushSubOpts/consumerConfig/ackPolicy" ou "subconf/config/brokerConfig/subscribeTopic/pullSubOpts/consumerConfig/ackPolicy" vaut "All" ou "Explicit", indique au courtier que le message est en cours de traitement et demande à réinitialiser le timer de rediffusion pour ce message (car vous avez besoin de plus de temps pour le traiter). Le traitement doit se terminer par un acquittement *ACK ou *NACK ou *ACK_SYNC ou *TERM. |
RabbitMQ AMQP
RabbitMQ AMQP |
---|
BRK_REPONSE '*ACK' Multiple Multiple | → | <Constante booléenne> | < variable BOOL> |
| Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/autoAck" vaut *FAUX, acquitte positivement le message en cours de traitement.
Le paramètre Multiple permet, lorsque sa valeur est *VRAI, d'accuser réception de tous les messages non encore acquittés, y compris le message courant ; lorsque sa valeur est *FAUX, d'accuser réception uniquement du message courant.
|
BRK_REPONSE '*NACK' Multiple Requeue Multiple | → | <Constante booléenne> | < variable BOOL> | Requeue | → | <Constante booléenne> | < variable BOOL> |
| Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/autoAck" vaut *FAUX, acquitte négativement le message en cours de traitement.
Le paramètre Multiple permet, lorsque sa valeur est *VRAI, de ne pas accuser réception de tous les messages non encore acquittés, y compris le message courant ; lorsque sa valeur est *FAUX, de ne pas accuser réception uniquement du message courant.
Le paramètre Requeue permet, lorsque sa valeur vaut *VRAI, de remettre en file d'attente le(s) message(s) rejeté(s) ; lorsque sa valeur vaut *FAUX, de rejeter ce(s) message(s) et de le(s) remettre en lettres mortes si la configuration de la souscription le permet. |
BRK_REPONSE '*REJECT' Requeue Requeue | → | <Constante booléenne> | < variable BOOL> |
| Lorsque la clé "subconf/config/brokerConfig/subscribeTopic/autoAck" vaut *FAUX, acquitte négativement le message en cours de traitement.
Le paramètre Requeue permet, lorsque sa valeur vaut *VRAI, de remettre en file d'attente le(s) message(s) rejeté(s ); lorsque sa valeur vaut *FAUX, de rejeter ce message et de le remettre en lettres mortes si la configuration de la souscription le permet. |
Redis Pub/Sub
Redis Pub/Sub |
---|
Pas de notion d'acquittement de message avec ce courtier. |
Après l'exécution de cet ordre, le mot réservé *CODE_RETOUR peut prendre les valeurs suivantes :
0 (*NORMAL) |
L'opération s'est bien déroulée. |
-1 |
Erreur interne. |
-2 |
Le paramètre NomPropriétéAlpha correspond à un mot réservé inconnu.
|
-3 |
Le second paramètre doit être booléen. |
Kafka |
-20 |
Le second paramètre doit être de type NUM_BIN_8. |
MQTT v3 |
Pas d'erreurs spécifiques. |
MQTT v5 |
Pas d'erreurs spécifiques. |
Nats JetStream |
-20 |
Erreur lors de l'acquittement *ACK du message. |
-21 |
Erreur lors de l'acquittement *NACK du message. |
-22 |
Erreur lors de l'acquittement *TERM du message. |
-23 |
Erreur lors de l'acquittement *IN_PROGRESS du message. |
-24 |
Erreur lors de l'acquittement *ACK_SYNC du message. |
-25 |
*ACK_SYNC doit avoir un paramètre de type NUM_BIN_8. |
-26 |
Erreur de conversion Long vers Duration pour *ACK_SYNC. |
RabbitMQ AMQP |
-20 |
Le second paramètre doit être booléen. |
-21 |
Les second et troisième paramètres doivent être booléens. |
-22 |
Erreur lors de l'acquittement *ACK du message. |
-23 |
Erreur lors de l'acquittement *NACK du message. |
-24 |
Erreur lors de l'acquittement *REJECT du message. |
Redis Pub/Sub |
Pas d'erreurs spécifiques. |
Par exemple
* Acquittement positif dans bloc onStart
BRK_REPONSE '*ACK'
* Stop souscripteur Nats Jetstream
ALPHA(10) order
order = '*stop'
BRK_REPONSE order
* Acquittement négatif de message RabbitMQ AMQP
BRK_REPONSE '*NACK' *VRAI *FAUX
SI *CODE_RETOUR <> *NORMAL
AJOUTER_TRACE 'Erreur *NACK' *ERREUR
FIN↑ Haut de page