Cet ordre permet de récupérer les informations contenues dans le message reçu.
Récupération de la charge utile d'un message
BRK_RECUP_MSG <variable résultat> <encodage>
A l'appel de cet ordre, la variable résultat reçoit la charge utile (ou payload) contenue dans le message. Le type de la variable dépend du type de charge utile supporté par le courtier de messages.
Courtier
Type natif de la charge utile
Types Adélia compatibles
Kafka
Avro / Double / Integer / Long / Short / String / Tableau d'octets
Si la variable résultat est de type REF_CLASSE, on suppose que la charge utile est une donnée JSON (alphanumérique ou tableau d'octets) encodée en UTF-8. Une désérialisation JSON est appliquée sur cette donnée pour alimenter la variable REF_CLASSE.
La désérialisation s'appuie sur le convertisseur de la librairie tierce Jackson : il est possible de modifier les propriétés par défaut du convertisseur en renseignant la propriété customObjectMapper du souscripteur Adélia.
Variable résultat ALPHA et encodage :
Si la variable résultat est de type ALPHA et que le payload est un tableau d'octets, il est possible de spécifier un encodage de caractères à utiliser lors de la conversion du tableau d'octets en chaîne alphanumérique. Cette valeur d'encodage doit faire partie du registre des jeux de caractères définis par l'IANA. De plus, il doit faire partie des jeux de caractères supportés par la JVM Java.
Lorsqu'un encodage est spécifié, la conversion est faite en fonction de la valeur de l'encodage.
Lorsqu'aucun encodage n'est spécifié, les règles de conversion varient en fonction du courtier ciblé et des propriétés du message à traiter :
Courtier
Règle de conversion
Kafka
L'encodage utilisé est l'encodage par défaut de la JVM Java qui exécute l'AMBSS.
Nats Jetstream
L'encodage utilisé est l'encodage par défaut de la JVM Java qui exécute l'AMBSS.
Nats Streaming
L'encodage utilisé est l'encodage par défaut de la JVM Java qui exécute l'AMBSS.
MQTT v3
L'encodage utilisé est l'encodage par défaut de la JVM Java qui exécute l'AMBSS.
MQTT v5
Si le message a la propriété properties/payloadFormat valant vrai, l'encodage utilisé est UTF-8. Sinon, l'encodage utilisé est l'encodage par défaut de la JVM Java qui exécute l'AMBSS.
RabbitMQ AMQP
Si le message a la propriété basicProperties/contentEncoding et qu'elle définit un encodage de caractères valide, cet encodage est utilisé. Sinon, l'encodage utilisé est l'encodage par défaut de la JVM Java qui exécute l'AMBSS.
Redis Pub/Sub
L'encodage utilisé est l'encodage par défaut de la JVM Java qui exécute l'AMBSS.
Cet ordre permet de récupérer des informations sur le message (hors charge utile). Chaque information est définie par une clé (paramètre NomPropriétéAlpha) et a une valeur associée (paramètre variable résultat) typée.
La clé peut être définie soit par une variable alphanumérique, soit par un littéral alphanumérique. Sa valeur représente une expression XPath et désigne une propriété native du message, donc dépendante du courtier de messages associé au souscripteur Adélia.
Message issu de Kafka
Valeur de clé
Description de la propriété
Type de la propriété
offset
Position du message dans la partition Kafka associée.
NUM_BIN_8
topic
Nom du topic dont est issu le message.
ALPHA(n)
partition
Partition à partir de laquelle le message est reçu.
ALPHA(n)
key
Clé associée au message (cette clé peut ne pas exister si l'émetteur n'a pas associé de clé au message).
Lorsque la propriété ackMode vaut "MANUAL" ou "MANUAL_IMMEDIATE" et que la propriété typeMsgHandling vaut "BATCH", cette clé indique si le message est le premier message du lot à traiter.
BOOL
lastPolled
Lorsque la propriété ackMode vaut "MANUAL" ou "MANUAL_IMMEDIATE" et que la propriété typeMsgHandling vaut "BATCH", cette clé indique si le message est le dernier message du lot à traiter.
BOOL
headers/keys
Liste des clés des couples <clé, valeur> constituant l'en-tête du message.
Tableau de ALPHA(n)
headers/values
Liste des valeurs des couples <clé, valeur> constituant l'en-tête du message. Le type natif des valeurs est un tableau d'octets.
IMAGE / REF_CLASSE
Message issu de MQTT v3
Valeur de clé
Description de la propriété
Type de la propriété
topic
Nom du topic dont est issu le message.
ALPHA(n)
id
Identifiant du message.
NUM_BIN_4
duplicate
Indique si ce message peut ou non être un doublon d'un message déjà reçu.
BOOL
retained
Retourne si oui ou non ce message a été conservé par le courtier. Indique si le message provenait ou non d'un émetteur en cours d'exécution ou s'il a été "retenu" par le courtier en tant que dernier message publié sur le topic.
BOOL
qos
Retourne la qualité de service associée au message (valeur 0, 1 ou 2).
NUM_BIN_4
Message issu de MQTT v5
Valeur de clé
Description de la propriété
Type de la propriété
topic
Nom du topic dont est issu le message.
ALPHA(n)
id
Identifiant du message.
NUM_BIN_4
duplicate
Indique si ce message peut ou non être un doublon d'un message déjà reçu.
BOOL
retained
Retourne si oui ou non ce message a été conservé par le courtier. Indique si le message provenait ou non d'un émetteur en cours d'exécution ou s'il a été "retenu" par le courtier en tant que dernier message publié sur le topic.
BOOL
qos
Retourne la qualité de service associée au message (valeur 0, 1 ou 2).
NUM_BIN_4
properties
properties
Propriétés d'un message.
N / A
properties/validProperties
Liste des numéro de propriétés de messages définies pour ce message (Cf. classe Java MqttProperties).
Tableau de NUM_BIN_2
properties/assignedClientIdentifier
Identifiant du client attribué (propriété numéro 18).
ALPHA(n)
properties/contentType
Type du contenu du message (propriété numéro 3).
ALPHA(n)
properties/correlationData
Données de corrélation (propriété numéro 9).
IMAGE
properties/payloadFormat
Format de la charge utile du message (propriété numéro 1). Si la valeur vaut vrai, la charge utile représente une chaîne de caractères encodée en UTF-8. Si la valeur vaut faux, la charge utile est une donnée brute sans format (tableau d'octets).
BOOL
properties/messageExpiryInterval
Intervalle d'expiration du message (propriété numéro 2). Cette valeur correspond à la durée de vie du message en secondes. Si l'intervalle d'expiration de message est passé et que le courtier n'a pas réussi à démarrer la livraison à un abonné correspondant, il doit alors supprimer la copie du message pour cet abonné.
NUM_BIN_8
properties/responseTopic
Nom de topic pour un message de réponse (propriété numéro 8).
ALPHA(n)
properties/subscriptionIdentifier
Identifiant de souscripteur (propriété numéro 11).
NUM_BIN_4
properties/topicAlias
Alias de topic du message (propriété numéro 35).
NUM_BIN_4
properties/userProperties
Propriétés utilisateur (propriété numéro 38). Liste de couples alphanumérique <clé, valeur>. Ces propriétés peuvent être utilisées pour fournir des informations supplémentaires au courtier ou au client, y compris des informations de diagnostic.
properties/userProperties[<index commençant à 1>]/key
Valeur du champ clé du couple d'index <index> dans la liste des propriétés utilisateur.
ALPHA(n)
properties/userProperties[<index commençant à 1>]/value
Valeur du champ valeur du couple d'index <index> dans la liste des propriétés utilisateur.
ALPHA(n)
Message issu de Nats Jetstream
Valeur de clé
Description de la propriété
Type de la propriété
jetStream
Vérifie si le message provient de Jetstream ou s'il s'agit d'un message standard (retourne vrai si le message provient de Jetstream).
BOOL
sid
Identifiant associé à l'abonnement, utilisé par la connexion lors du traitement d'un message entrant du courtier.
ALPHA(n)
utf8mode
Indique si le sujet du message est encodé en UTF-8.
BOOL
hasHeaders
Vérifie si le message contient des propriétés d'en-tête (retourne vrai si le message en contient).
BOOL
subject
Sujet auquel ce message a été envoyé.
ALPHA(n)
replyTo
Sujet sur lequel l'application est censée envoyer un message de réponse.
ALPHA(n)
headers
headers
Table de correspondance clé/valeurs associée au message. Une clé est de type alphanumérique et la valeur est une liste d'alphanumérique.
N / A
headers/size
Taille de la table de correspondance clé/valeurs associée au message (correspond au nombre d'entrées dans la table).
NUM_BIN_4
headers/empty
Indique si la table de correspondance clé/valeurs associée au message est vide (de taille 0).
BOOL
headers/keySet
Retourne la liste des clés (correspondant aux entrées dans la table de correspondance clé/valeurs associée au message).
tableau de ALPHA(n)
headers/keySet[<index commençant à 1>]
Retourne la valeur de la clé d'index <index> dans la liste des clés.
ALPHA(n)
headers/entrySet
Retourne la liste des couples <clé, valeur> constituant la table de correspondance clé/valeurs associée au message.
N / A
headers/entrySet[<index commençant à 1]/key
Retourne la valeur de la clé associée au couple d'index <index> dans la liste des couples <clé, valeur>.
ALPHA(n)
headers/entrySet[<index commençant à 1]/value
Retourne la valeur du champ valeur associé au couple d'index <index> dans la liste des couples <clé, valeur>.
Tableau de ALPHA(n)
Message issu de Nats Streaming
Valeur de clé
Description de la propriété
Type de la propriété
sequence
Numéro de séquence du message dans le flux associé.
NUM_BIN_8
subject
Sujet auquel ce message a été envoyé.
ALPHA(n)
replyTo
Sujet sur lequel l'application est censée envoyer un message de réponse.
ALPHA(n)
timestamp
Timestamp du message (en nano secondes).
NUM_BIN_8
redelivered
Détermine si ce message a été remis ou non à la connexion de ce client.
BOOL
crc32
Somme de contrôle CRC32 de ce message.
NUM_BIN_4
Message issu de RabbitMQ AMQP
Valeur de clé
Description de la propriété
Type de la propriété
envelope
envelope
Enveloppe du message.
N / A
envelope/exchange
Nom du routeur (ou exchange) associé au message.
ALPHA(n)
envelope/redeliver
Indique si le message est redélivré.
BOOL
envelope/routingKey
Clé de routage associée au message.
ALPHA(n)
basicProperties
basicProperties
Propriétés du message.
N / A
basicProperties/contentType
Type de contenu de la charge utile du message.
ALPHA(n)
basicProperties/contentEncoding
Encodage du contenu de la charge utile du message.
ALPHA(n)
basicProperties/deliveryMode
Mode de délivrance du message (message persistant ou pas). La valeur 1 indique que le message est stocké uniquement en mémoire ; la valeur 2 indique qu'il est stocké sur disque.
NUM_BIN_4
basicProperties/priority
Priorité du message dans la queue associée.
NUM_BIN_4
basicProperties/correlationId
Identifiant de corrélation du message.
ALPHA(n)
basicProperties/replyTo
Nom de la queue à utiliser pour répondre au message.
ALPHA(n)
basicProperties/expiration
Durée de vie du message en millisecondes.
ALPHA(n)
basicProperties/messageId
Identifiant applicatif du message.
ALPHA(n)
basicProperties/timestamp
Timestamp applicatif du message.
TIMESTAMP / HEURE / DATE
basicProperties/type
Type applicatif du message.
ALPHA(n)
basicProperties/userId
Identifiant utilisateur qui a publié ce message.
ALPHA(n)
basicProperties/appId
Identifiant de l'application qui a publié ce message.