Rubrique précédente: Message JMSRubrique suivante: Test de l'étape JMS Send Receive (Envoyer/recevoir des messages JMS)


Schémas de corrélation JMS

Considérez un service de messagerie avec deux clients qui s'exécutent simultanément. Chaque client peut envoyer un message de demande à la même file d'attente de demandes. Le service peut traiter les demandes dans l'ordre de votre choix et envoyer les messages de réponse vers une file d'attente de réponses. Quelle solution permet à chaque client de recevoir sa propre réponse et pas celle destinée à un autre client ?

La solution la plus commune est d'inclure un type d'identificateur dans la demande et de copier l'identificateur dans la réponse. Cet identificateur est connu comme l'ID de corrélation. Chaque client utilise un ID de corrélation unique. Un mécanisme est utilisé pour garantir que chaque client peut uniquement recevoir une réponse contenant son ID de corrélation.

Vous pouvez activer la corrélation dans l'étape JMS Send Receive (Envoyer/recevoir des messages JMS). Les schémas de corrélation suivants sont disponibles :

Les schémas de corrélation varient en fonction des comportements suivants :

Schéma JMS Correlation ID (ID de corrélation JMS)

La plupart des plates-formes de messagerie comprennent un champ d'ID de corrélation. Dans ce schéma, le client génère un ID unique et envoie un message de demande contenant cet ID dans le champ d'ID de corrélation. Avant que le service envoie le message de réponse, il copie l'ID de corrélation du message de demande dans le message de réponse. Le client attend un message de réponse qui contient le même ID de corrélation que la demande d'origine.

Par défaut, l'ID de corrélation est automatiquement généré. Pour spécifier la valeur manuellement, utilisez le champ Manual Value (Valeur manuelle).

La liste Reuse ID (Réutiliser l'ID) indique si un nouvel ID de corrélation doit être généré pour chaque nouvelle transaction ou si le même ID de corrélation doit être utilisé pendant le test.

Schéma JMS Message ID to Correlation ID (De l'ID de message JMS à l'ID de corrélation)

Ce schéma est similaire au schéma JMS Correlation ID (ID de corrélation JMS).

La plupart des plates-formes de messagerie ont également un champ d'ID de message, qui contient un identificateur unique pour le message. L'ID de message est automatiquement généré.

Avant que le service envoie le message de réponse, il copie l'ID du message de réponse dans le champ d'ID de corrélation du message de réponse. Le client attend un message de réponse qui contient un ID de corrélation qui correspond à l'ID de message de demande d'origine.

Vous ne pouvez pas spécifier l'ID de message manuellement, ni le réutiliser.

JMS Payload (Charge utile JMS)

Ce schéma se base sur un ID de corrélation intégré dans la charge utile des messages de demande et de réponse. Il comprend un schéma de charge utile associé qui contrôle l'intégration de l'ID de corrélation. Le schéma de charge utile par défaut vous permet de définir des expressions XPath pour obtenir l'ID de corrélation à partir des messages.

Le graphique suivant présente un exemple de schéma de corrélation JMS Payload (Charge utile JMS) avec le schéma de charge utile XPath.

Capture d'écran du schéma de corrélation de charge utile JMS avec le schéma de charge utile XPath

La liste Reuse ID (Réutiliser l'ID) indique si un nouvel ID de corrélation doit être généré pour chaque nouvelle transaction ou si le même ID de corrélation doit être utilisé pendant le test.

Vous ne pouvez pas mélanger le schéma de corrélation JMS Payload (Charge utile JMS) avec les autres deux schémas de corrélation dans la même file d'attente. Si un écouteur effectue ses écoutes sur une file d'attente avec le schéma de corrélation JMS Payload, tous les écouteurs sur cette même file d'attente doivent utiliser la charge utile JMS. Toutefois, vous pouvez utiliser les schémas JMS Correlation ID (ID de corrélation JMS) et JMS Message ID to Correlation ID (De l'ID de message JMS à l'ID de corrélation) comme schémas de charge utile pour le schéma de corrélation JMS Payload.