[AIX Solaris HP-UX Linux Windows][IBM i]

Mode de traitement des messages en mode non ASF

En mode non ASF, les unités d'exécution sont actives dès que le démarrage du port du programme d'écoute. Le nombre d'unités d'exécution actives dépend de la valeur définie pour l'option Nombre maximal de sessions. Le nombre indiqué pour le paramètre Nombre maximal de sessions définit le nombre d'unités d'exécution actives, quel que soit le nombre de messages pouvant être traités. Chaque unité d'exécution active est une connexion réseau physique individuelle.

Si vous utilisez IBM MQ Version 7.0 o ultérieure en tant que fournisseur de messagerie, il est possible d'avoir jusqu'à 10 unités d'exécution partageant une seule connexion réseau physique.

Les ports d'écoute sont stabilisés à partir de la version 7 et des versions ultérieures de WebSphere Application Server. Pour plus d'informations, lisez l'article sur les fonctions stabilisées. Vous devez vous préparer à faire migrer vos configurations de déploiement de bean géré par message WebSphere MQ depuis l'utilisation des ports d'écoute vers l'utilisation des spécifications d'activation. [AIX Solaris HP-UX Linux Windows][IBM i]Pour plus d'informations sur la configuration des spécifications d'activation du mode non-ASF, voir Configuration de spécifications d'activation du mode non-ASF. Toutefois, ne commencez pas cette migration si vous pensez que l'application a encore besoin d'utiliser des serveurs d'applications antérieurs à WebSphere Application Server Version 7. Par exemple, si vous disposez d'un cluster de serveurs d'applications dont certains membres sont à la version 6.1 et d'autres à une version ultérieure, vous ne devez pas migrer les applications de ce cluster pour qu'elles utilisent les spécifications d'activation avant d'avoir migré tous les serveurs d'applications du cluster vers la version ultérieure.

Traitement des messages en mode non ASF

Pour activer le mode non ASF, indiquez une valeur différente de zéro pour la propriété personnalisée NON.ASF.RECEIVE.TIMEOUT du service du programme d'écoute des messages. La propriété NON.ASF.RECEIVE.TIMEOUT joue le rôle d'un commutateur qui désactive le mode ASF. Elle correspond également à une valeur de délai pour la méthode receive().

Remarque : Les propriétés personnalisées du service de programme d'écoute de message ne fonctionnent pas en mode non ASF :
  • SERVER.SESSION.POOL.REAP
  • SERVER.SESSION.POOL.UNUSED.TIMEOUT
  • SERVER.SESSION.POOL.UNUSED.TIMEOUT.Ipaname

Le diagramme suivant montre le processus de traitement de messages entre WebSphere Application Server et IBM MQ en mode non ASF :

Figure 1. Traitement des messages en mode non ASF
[AIX Solaris HP-UX Linux Windows][IBM i]La figure est décrite dans le texte.
Comme présenté dans le diagramme, lorsque le service d'écoute de messages est en mode non ASF, les messages sont traités de la manière suivante :
  1. Une fois le port d'écoute démarré, ce dernier obtient une unité d'exécution provenant du pool d'unités d'exécution correspondant au service d'écoute des messages.
  2. Le port d'écoute ouvre une connexion au gestionnaire de files d'attente IBM MQ sur l'unité d'exécution et crée un destinataire de message JMS. Ce dernier écoute sur la destination JMS sur laquelle le port d'écoute écoute également.
  3. Le port d'écoute crée une transaction afin de gérer le traitement des messages.
  4. L'unité d'exécution appelle la méthode receive() sur le destinataire de message afin d'écouter les messages au niveau de la destination. Si la méthode receive() ne détecte aucun message pendant la période définie pour NON.ASF.RECEIVE.TIMEOUT, le serveur d'applications annule la transaction active et en démarre une nouvelle. L'unité d'exécution commence ensuite à appeler à nouveau la méthode receive().
  5. Lorsque le destinataire détecte un message, il vérifie si le message est approprié pour le bean MDB qui utilise le port d'écoute.
  6. Si le message est approprié, la méthode receive() le retire de la destination et l'envoie à l'unité d'exécution.
  7. L'unité d'exécution appelle la méthode onMessage() du bean MDB sur le destinataire du message puis le message est traité.
  8. Si la traitement du message abouti, la transaction est validée. Dans le cas contraire, elle est annulée.
  9. Une nouvelle transaction est démarré et le destinataire du message appelle la méthode receive() afin de surveiller les nouveaux messages.
Le nombre d'unités d'exécutions pouvant être traitées par un bean géré par message est déterminé par la valeur de la propriété Nombre maximal de sessions pour le port d'écoute. Si vous affectez à la propriété Nombre maximal de sessions la valeur par défaut 1, cela signifie que le bean géré par message ne peut traiter qu'un seul message à la fois. Pour traiter plusieurs messages en même temps, vous pouvez le faire en mode ASF en attribuant à la propriété Nombre maximal de sessions une valeur supérieure à 1. Par exemple, si la propriété Nombre maximal de sessions a pour valeur 2, les messages sont traités de la manière suivante :
  1. Une fois le port d'écoute démarré, ce dernier obtient deux unités d'exécution provenant du pool d'unités d'exécution correspondant au service d'écoute des messages.
  2. Le port d'écoute crée un destinataire de message et une transaction sur chaque unité d'exécution. Les destinataires de message écoutent sur la destination sur laquelle le port d'écoute écoute également.
  3. Les deux destinataires appellent la méthode receive() pour surveiller les messages sur la destination. Chaque destinataire tente d'obtenir les messages de la destination en premier.
  4. Lorsqu'un destinataire extrait le message, il le traite en appelant la méthode onMessage() du bean MDB. L'autre destinataire continue d'appeler la méthode receive() pour écouter les messages sur la destination.

Comment éviter des délais d'expiration de transaction non souhaités

Si votre système de messagerie s'exécute en mode non ASF, pour éviter des délais d'expiration de transaction non souhaités, vous devez autoriser une durée de traitement suffisante avant d'atteindre le délai total du cycle de vie des transactions. Par conséquent, vous devez vous assurer que la valeur que vous spécifiez pour la propriété personnalisée du service d'écoute de message NON.ASF.RECEIVE.TIMEOUT est inférieure à la valeur que vous spécifiez pour la propriété de service de transaction Dépassement du délai autorisé pour la durée de vie des transactions, et que la différence entre les valeurs des deux propriété est supérieure à la durée du traitement du message par la méthode onMessage() du bean géré par message (MDB).

Comme indiqué dans l'exemple suivant, si ces propriétés ne sont pas correctement configurées, les transactions peuvent arriver à expiration avant qu'elles ne se terminent. Cela est dû au fait que l'unité d'exécution commence à appeler la méthode receive() dès que la transaction est créée. Dans l'exemple suivant, NON.ASF.RECEIVE.TIMEOUT a la valeur 110000 millisecondes (110 secondes), Durée de vie totale des transactions a la valeur 120. La méthode onMessage () du bean MDB traite un message en 15 secondes. L'exemple suppose qu'aucun message n'apparaît sur la destination tant que la méthode receive() n'est pas presque arrivée à expiration :
  1. Le port d'écoute démarre. Il alloue une unité d'exécution provenant du pool d'unités d'exécution et crée une transaction et un destinataire de message sur l'unité d'exécution.
  2. L'unité d'exécution appelle la méthode receive() afin de surveiller les messages.
  3. Après 110 secondes, un message s'affiche sur la destination.
  4. L'unité d'exécution supprime le message de la destination et appelle la méthode onMessage() du bean MDB pour commencer à traiter le message.
  5. Après 10 secondes, le délai d'expiration de la transaction est atteint. Le serveur d'applications marque la transaction pour annulation.
  6. Après 5 secondes, la méthode onMessage() finit le traitement du message et tente de valider la transaction.
  7. La durée totale écoulée depuis le démarrage de la transaction est de 125 secondes (110 secondes d'attente d'un message plus 15 secondes de traitement du message). Comme cette durée est supérieure au délai de transaction, le serveur d'applications empêche la validation de la transaction qui est alors annulée.

Pour plus d'informations sur le mode de configuration des propriétés NON.ASF.RECEIVE.TIMEOUT et Durée de vie totale des transactions afin d'éviter des délais d'expiration de transaction non souhaités, voir les tâches connexes.


Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cmb_asfnonasf_nonasf
Nom du fichier : cmb_asfnonasf_nonasf.html