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).
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.
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.
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". |