Charge de message JMS
Comment le contenu est extrait du message JMS pour chacun des types de message JMS.
- BytesMessage
- TextMessage
- ObjectMessage
Un traitement supplémentaire est nécessaire pour traiter la charge ObjectMessage car la charge ObjectMessage JMS est un objet Java™ sérialisé.
Le noeud JMSInput obtient le contenu en appelant
getObject( )sur le message.getObject( )renvoie un objet désérialisé de la classe d'origine. Cette définition de classe doit être mise à disposition du noeud JMSInput et vous devez vous assurer qu'elle est accessible via le chemin d'accès aux classes Java du noeud d'intégration. (Le chemin d'accès aux classes est défini dans le fichier de traitement par lots mqsiprofile, qui se trouve dans le répertoire exécutable du noeud d'intégration ; par exemple, sous Windows, il s'agit de mqsiprofile.cmd dans le répertoire install_dir/bin .) Le noeud JMSInput appelle l'analyseur BLOB, qui crée le corps du message à l'aide d'un flux binaire créé à partir de l'objet.L'objet Java peut ensuite être resérialisé dans un noeud JavaCompute ou dans une extension définie par l'utilisateur, et il est mis à jour à l'aide de ses appels de méthode.
Le contenu de MapMessage et StreamMessage peut être extrait uniquement en tant qu'éléments individuels et doit être reformaté par le noeud JMSInput avant de pouvoir être utilisé pour créer le corps du message.
- Charge deMapMessage
Le domaine JMSMap est un synonyme de l'analyseur syntaxique XML du noeud d'intégration, qui attend un flux de données XML. Les données de contenu MapMessage sont toutefois extraites en tant qu'ensembles de paires nom-valeur de l'objet message. L'API JMS est utilisée pour obtenir les paires nom-valeur.
Le noeud JMSInput ajoute chaque paire nom-valeur à un flot de bits en tant qu'élément et valeur XML et conserve le type de la valeur à l'aide de l'attribut
dt=.L'exemple suivant illustre le code XML généré par le noeud JMSInput pour la charge MapMessage :
Dans cet exemple, le message contient 10 zones. Les noms de zone ont été générés par une application client JMS et se présentent sous la forme<map> <Item_8_of_10_Char dt='char'>A</Item_8_of_10_Char> <Item_5_of_10_Double dt='r8'>999999.0</Item_5_of_10_Double> <Item_10_of_10_String>Last Map Item</Item_10_of_10_String> <Item_9_of_10_Boolean dt='boolean'>0</Item_9_of_10_Boolean> <Item_2_of_10_Integrer dt='i4'>999</Item_2_of_10_Integrer> <Item_3_of_10_Short dt='i2'>9999</Item_3_of_10_Short> <Item_7_of_10_Byte dt='i1'>9</Item_7_of_10_Byte> <Item_6_of_10_Float dt='r4'>2.24</Item_6_of_10_Float> <Item_1_of_10_String>P2P Map Msg Number:1</Item_1_of_10_String> <Item_4_of_10_Long dt='i8'>99999</Item_4_of_10_Long> </map>item_n_of_x_t, où:nest le numéro de séquence dans lequel l'élément a été ajouté au message,xest le nombre total d'éléments dans la carte,test le type de la valeur.
Si un noeud JMSInput reçoit un message JMS MapMessage qui contient des caractères non valides dans une balise XML, il échappe les noms comme suit:- La balise XML de l'élément de nom est formée en tronquant l'élément de nom de message JMS jusqu'à l'emplacement du premier caractère non valide.
- Le nom d'origine de l'élément de nom JMS est conservé dans un attribut de la balise XML.
- La balise XML de fermeture correspond à la balise d'ouverture, sans l'attribut de balise.
<ORDER_ITEM[5]><WIDGET>dans un MapMessage JMS serait convertie en XML et écrite dans l'arborescence de messages sous la forme<ORDER_ITEM ibm_original_name="ORDER_ITEM[5]">WIDGET</ORDER_ITEM> - ChargeStreamMessage
Les données de charge StreamMessage sont une séquence de zones, où chaque zone a un type spécifique. Les zones n'ayant pas de noms associés, un nom d'élément par défaut
eltest utilisé pour générer les éléments XML. Semblable à la MapMessage, l'API JMS permet de récupérer les champs uniquement individuellement. Le noeud JMSInput extrait les champs du message JMS et les ajoute à un flux binaire au format XML.Voici un exemple de code XML généré par le noeud JMSInput pour la charge StreamMessage :
Dans cet exemple, 10 valeurs saisies sont ajoutées à StreamMessage par une application client JMS.<stream> <elt>P2P Stream Message Number :7</elt> <elt dt='i4'>999</elt> <elt dt='i2'>9999</elt> <elt dt='i8'>99999</elt> <elt dt='r8'>999999.0</elt> <elt dt='r4'>2.24</elt> <elt dt='i1'>9</elt> <elt dt='char'>A</elt> <elt dt='boolean'>0</elt> <elt>Last Stream Item</elt> </stream>