Téléchargement des produits


Version anglaise


 


Cette fonction permet de publier une variable Adélia en tant que message vers un broker de messages supportant le protocole AMQP v0.9.1. Cette API a été validée avec le logiciel d'agent de messages open source RabbitMQ (https://www.rabbitmq.com/).


L'exécution de cette fonction s'appuie sur un fichier de paramétrage (au format YAML dans un environnement Windows ou Java, au format XML dans un environnement AS/400), définissant la configuration détaillée du broker logique Adélia manipulé.

Cette fonction permet d'effectuer un envoi asynchrone de message. Pour un envoi synchrone, voir la fonction VaToolBxAMQPSyncPublish.


Remarque : Dans un contexte Windows, il est recommandé (pour des raisons de performance) d'avoir la dll VaToolBx déjà chargée (ordre CHARGER_DLL) avant le premier appel à une fonction VaToolBxAMQPxxxxxx, et cette dll doit rester chargée au moment de l'appel des fonctions VaToolBxAMQPxxxxxx suivantes.


Domaine d'application

  • Client Cloud

  • Serveur Java

  • Client Java

  • Client Web

  • Client Windows

  • Serveur Windows

  • Serveur AS/400


Paramètres

ALPHA(n) AdeliaLogicalBroker Nom du broker logique Adelia. Ses paramètres (broker, port, etc.) sont définis dans le fichier de configuration AdeliaLogicalBrokersConfig.yaml.
ALPHA(n) ExchangeName Nom de l'exchange (routeur de message) dans lequel envoyer le message. 
ALPHA(n) RoutingKey Clé de routage permettant à l'exchange de déterminer la ou les queues dans lesquelles déposer le message.
IMAGE ou ALPHA(n) ou REF_CLASSE (REF_CLASSE avec runtime Java uniquement) Message

Valeur du message à envoyer au broker. La valeur envoyée est un tableau d'octets.

Dans le cas du type ALPHA, la chaîne est encodée en UTF-8 si aucun encodage n'est défini dans le paramètre MessageArguments.

Dans le cas du type IMAGE, la valeur du message est le contenu sans conversion de la variable IMAGE.

Dans le cas du type REF_CLASSE, la valeur du message est une chaîne alphanumérique au format JSON (encodée en UTF-8) issue de la sérialisation de la variable REF_CLASSE.

IMAGE ou ALPHA MessageArguments

Meta données permettant de particulariser le message à envoyer. Ce paramètre doit être au format JSON sous la forme d'un objet.

Ses attributs sont parmi les suivants :

    • contentType
    • contentEncoding
    • headers
    • deliveryMode
    • correlationId
    • replyTo
    • expiration
    • messageId
    • timestamp
    • type
    • userId
    • appId
    • clusterId
    • priority

Cf. https://www.rabbitmq.com/publishers.html

NUM_BIN_2 CodeRetour

Code retour :

0 : Succès de l'exécution.


-1 : Le paramètre Message n'est pas du bon type Adélia.

-2 : Le paramètre MessageArguments n'est pas du bon type Adélia.

-3 : Le paramètre AdeliaLogicalBroker ne doit pas être vide.

-4 : Erreur lors de l'analyse syntaxique du paramètre MessageArguments.

-5 : Erreur lors de la transformation JSON du paramètre MessageArguments.

-6 : Erreur lors de la lecture du paramètre MessageArguments.

-7 : Erreur lors de l'encodage du paramètre Message.

-8 : Erreur lors de la sérialisation JSON du paramètre Message.

-9 : Configuration non chargée. Aucun broker logique défini ( fichier .YAML non défini, trouvé, ou chargé).

-10 : Pas de configuration définie dans le fichier .YAML pour l'Adelia broker logique spécifié.

-11 : Erreur lors de la création du client d'agent de message.

-12 : Erreur lors de la création des entités (exchanges, queues, liaisons) définies dans la configuration du broker logique AdeliaLogicalBroker.


1 : Erreur lors de la publication du message.



Exemple 1

REF_CLASSE(MACLASSE) myInstance

myExchange = 'directExchangePrinting'

myRoutingKey = 'order_form'


* Publier un message dans un exchange de type direct

APPELER_DLL 'VaToolBx' 'VaToolBxAMQPPublish' 'myLogicalBroker' myExchange myRoutingKey myInstance *BLANK myReturnCode




Exemple 2

ALPHA(132) myMessage

myExchange = 'directExchangePrinting'

myRoutingKey = 'order_form'

myMessage = '<!DOCTYPE html><html><head><meta charset="ISO-8859-1"><title>Title of the document</title></head><body>Hello world!</body></html>'

myMessageARguments = '{"contentType":"text/html", "contentEncoding": "ISO-8859-1"}'


* Publier un message (un document HTML) avec comme méta données un type de contenu et un encodage de contenu

APPELER_DLL 'VaToolBx' 'VaToolBxAMQPPublish' 'myLogicalBroker' myExchange myRoutingKey myMessage myMessageARguments myReturnCode



Exemple 3

myMessage = 'Hello world!'

myRoutingKey = 'routeOne'


* Publier un message dans l'exchange par défaut (de type direct)

APPELER_DLL 'VaToolBx' 'VaToolBxAMQPPublish' 'myLogicalBroker' *BLANK myRoutingKey myMessage *BLANK myReturnCode



Exemple 4

myExchange = 'topicExchangeMonitoringSensors'

myRoutingKey = 'bathroom.temperature'

myMessage = '21'


* Publier un message dans un exchange de type topic

APPELER_DLL 'VaToolBx' 'VaToolBxAMQPPublish' 'myLogicalBroker' myExchange myRoutingKey myMessage *BLANK myReturnCode



Exemple 5

myExchange = 'fanoutExchange'

myMessage = 'For all queues!'


* Publier un message dans un exchange de type fanout : la routing key n'est pas neccessaire

APPELER_DLL 'VaToolBx' 'VaToolBxAMQPPublish' 'myLogicalBroker' myExchange *BLANK myMessage *BLANK myReturnCode



Exemple 6

myExchange = 'headersExchangeMonitoringSensors'

myMessageArguments = '{"headers" : {"location": "bathroom", "sensor": "temperature"}}'

myMessage = '21'


* Publier un message dans un exchange de type headers. La routing key n'est pas utilisée par l'exchange . Seuls les attributs clé / valeur de la méta donnée headers du message sont pris en compte.

APPELER_DLL 'VaToolBx' 'VaToolBxAMQPPublish' 'myLogicalBroker' myExchange *BLANK myMessage myMessageArguments myReturnCode



Liste des fonctions de la DLL VaToolBx par thème

↑ Haut de page




  • Aucune étiquette