Modèle de programmation de sortie asynchrone

Ce modèle de programmation vous permet d'extraire une sortie mise en file d'attente par IMS.

Il est possible que votre application doive récupérer des messages de sortie ayant été précédemment mis en file d'attente, d'où le terme de messages de sortie asynchrones. Les messages de sortie asynchrones résultent de situations diverses. Par exemple, les messages de sortie non distribués des interactions en mode de validation 0, les messages de sortie issus d'un basculement de type programme-programme, les messages de sortie des ISRT vers un PCB alternatif ou les messages de sortie d'une application IMS qui renvoie plusieurs messages de sortie.

Pour récupérer une sortie asynchrone, votre application Java exécute une interaction SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT ou SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT. Elle fournit une valeur pour la propriété interactionVerb et une valeur 0 pour la propriété commitMode de l'objet IMSInteractionSpec utilisé par la méthode d'exécution de l'interaction.

Il existe deux types de connexions socket que vous pouvez utiliser pour l'extraction de sorties asynchrones : connexion socket persistante partageable et connexion socket persistante dédiée. L'extraction de messages de sortie asynchrones est différente selon le type de connexion socket utilisée. Vous pouvez utiliser les valeurs suivantes de la propriété interactionVerb : SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT et SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT (ainsi que la valeur SYNC_RECEIVE_ASYNCOUTPUT, plus ancienne).

Remarque : Il n'y a pas de différence entre la valeur SYNC_RECEIVE_ASYNCOUTPUT et la valeur SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT. Il est cependant conseillé d'utiliser le dernier nom en vigueur SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT avec V9.1.0.1 et les livrables ultérieurs de l'adaptateur de ressources du gestionnaire de transactionsIMS. Seule la valeur SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT sera utilisée dans ce document.

La différence entre SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT et SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT détermine la manière dont IMS Connect vérifie les sorties sur la file d'attente de stockage temporaire asynchrone OTMA d'IMS. Si, pour les interactions SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT ou SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT, il n'existe aucune sortie asynchrone dans la file d'attente de stockage temporaire asynchrone OTMA d'IMS lorsque la requête d'extraction est exécutée, IMS Connect renvoie une notification concernant le délai d'attente d'exécution dès que la valeur de ce délai définie par l'application client est passée. Il est donc conseillé d'utiliser la valeur de délai d'attente d'exécution la plus petite possible, soit 10, pour les interactions SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT.

Si, pour une interaction SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT, il n'existe aucune sortie asynchrone dans la file d'attente de stockage temporaire asynchrone OTMA d'IMS lorsque la requête d'extraction est exécutée, IMS Connect attend que le temps défini dans la propriété executionTimeout de l'interaction pour OTMA soit écoulé avant de renvoyer un message. Si la file d'attente de stockage temporaire ne comporte toujours pas de sortie asynchrone une fois le délai écoulé, IMS Connect renvoie une erreur concernant le délai d'attente d'exécution. Pour une interaction SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT, sélectionnez une valeur de délai d'attente d'exécution appropriée et non la plus petite valeur possible.

Ces trois valeurs de la propriété interactionVerb requièrent le mode de validation 0 et peuvent s'utiliser aussi bien sur les connexions socket persistantes partageables que les connexions socket persistantes dédiées. Par ailleurs, les propriétés de IMSInteractionSpec, purgeAsycOutput, reRoute et reRouteName ne s'appliquent pas aux interactions qui utilisent ces trois interactionVerbs et sont ignorées par l'adaptateur de ressources IMS TM. Les propriétés interactionVerb ne sont pas appelées de la même façon sur les connexions socket persistantes partageables et sur les connexions socket persistantes dédiées. En outre, les messages de sortie asynchrones peuvent être extraits des connexions socket persistantes partageables au moyen de deux techniques : utilisation d'un ID client alternatif ou d'un nom de redirection (reRouteName)

Extraction de sortie asynchrone sur une connexion socket persistante dédiée

Pour extraire un message de sortie mis en file d'attente sur une connexion socket persistante dédiée, l'application client doit exécuter une interaction en mode de validation 0 avec la propriété interactionVerb d'IMSInteractionSpec définie sur SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT ou SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT.

Par ailleurs, l'application client doit également fournir une valeur pour la propriété clientID d'IMSConnectionSpec. Cet ID client est obligatoire car il détermine le TPIPE à partir duquel la sortie asynchrone sera extraite. Pour procéder à l'extraction de messages de sortie d'une interaction en mode de validation 0 sur une connexion persistante dédiée, l'ID client défini pour l'interaction SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT doit correspondance à la valeur définie pour l'interaction originale en mode de validation 0. Pour procéder à l'extraction de messages de sortie envoyés à un autre bloc de communication de programme (Program Communication Block), l'ID client défini pour l'interaction SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT doit correspondre au nom de ce PCB. Pour procéder à l'extraction de messages de sortie ayant été réacheminés vers une destination reRouteName, l'ID client de l'interaction SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT doit être défini sur la destination indiquée par la propriété reRouteName.

Extraction des messages de sortie asynchrones avec un ID client alternatif sur des connexions socket persistantes partageables

En utilisant un ID client alternatif, une application client peut obtenir des messages de sortie asynchrones, redirigés ou non, à partir de n'importe quel TPIPE OTMA. Cet ID alternatif est spécifié par la propriété altClientID de l'objet IMSInteractionSpec utilisé par la méthode execute de l'interaction. L'ID client alternatif correspondra au nom du TPIPE OTMA qui détient les messages de sortie asynchrones. Une application client ne peut pas spécifier un nom de redirection (rerouteName) et un ID client alternatif dans la même interaction.

L'ID client alternatif est pris en charge à condition que l'application client réponde aux critères suivants :

Extraction des messages de sortie asynchrones sans utilisation d'un ID client alternatif sur des connexions socket persistantes partageables

Si elle n'utilise pas d'ID client alternatif, l'application client peut seulement extraire les messages de sortie asynchrones non redirigés, résultant d'une interaction sur une connexion socket persistante partageable, en exécutant une interaction SYNC_RECEIVE_ASYNCOUTPUT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT ou SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT sur cette même connexion et dans la même application ayant invoqué l'interaction qui a conduit à la mise en file d'attente des messages de sortie asynchrone.

Le tableau suivant présente le comportement de l'interaction d'extraction de messages de sortie asynchrones (resumeTpipe) lorsque différentes propriétés sont spécifiées.
Tableau 1. Comportement des interactions resumeTpipe en fonction des propriétés spécifiées dans IMSConnectionSpec
Interaction Socket clientID reRouteName altClientID Commentaires
resumeTPIPE, sans spécification d'un altClientID Partageable null null null L'extraction des messages de sortie asynchrones doit se faire sur la même connexion que celle utilisée pour l'interaction précédente. Sinon, les messages ne peuvent pas être extraits. Si l'extraction échoue, les messages seront perdus.
resumeTPIPE, sans spécification d'un altClientID Partageable null myRR null L'extraction des messages de sortie asynchrones doit se faire sur la même connexion que celle utilisée pour l'interaction précédente. Si l'extraction échoue, les messages seront redirigés vers myRR.
resumeTPIPE, avec spécification d'un altClientID Partageable null N/A myTPIPE Les messages asynchrones sont extraits du TPIPE "myTPIPE". Les propriétés reRouteName et altClientID s'excluent mutuellement et ne doivent pas être utilisées en même temps.
resumeTPIPE Dédié myCID N/A N/A Les messages asynchrones sont extraits du TPIPE "myCID".
Remarque : Pour les connexions socket persistantes partageables, le mode de validation d'une interaction SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT sera automatiquement défini sur 0 de manière interne par l'adaptateur de ressources IMS TM sans considération de la valeur définie dans IMSInteractionSpec pour cette interaction. Ce comportement est différent de celui des interactions SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT sur les connexions socket persistantes dédiées. Pour les connexions socket dédiées, le mode de validation doit être explicitement défini sur 0.

Vos commentaires