![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
Comment éviter des délais d'expiration pour les transactions en mode non ASF
Si votre système de messagerie s'exécute en mode non ASF, vous devez configurer correctement la propriété de service de transaction Durée de vie totale des transactions et la propriété personnalisé de service d'écoute de message NON.ASF.RECEIVE.TIMEOUT afin d'éviter des délais d'expiration de transaction indésirables.
Avant de commencer
Pour suivre les différentes étapes de cette tâche, votre système de messagerie doit s'exécuter en mode non ASF. Pour passer du mode ASF au mode non ASF, ajoutez la propriété personnalisée NON.ASF.RECEIVE.TIMEOUT au service d'écoute de message, comme cela est décrit dans Configuration du service d'écoute de messages.
Pourquoi et quand exécuter cette tâche
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. 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.
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).
Procédure
- Pour configurer la propriété de service de transaction Dépassement du délai autorisé pour la durée de vie des transactions, suivez l'étape 8 dans Configuration des propriétés de transaction pour un serveur d'applications.
- Pour configurer la propriété personnalisée du service d'écoute NON.ASF.RECEIVE.TIMEOUT, cliquez sur .
- Cliquez sur NON.ASF.RECEIVE.TIMEOUT. La page Propriétés générales s'affiche.
- Modifiez la zone Valeur. La valeur de NON.ASF.RECEIVE.TIMEOUT doit être définie en millisecondes. Assurez-vous que la valeur indiquée, lorsqu'elle est convertie en secondes (pour cela, divisez-la par 1000), est inférieure à la valeur indiquée pour Durée de vie totale des transactions et que la différence entre les valeurs des deux propriétés est supérieure au nombre maximal de secondes pendant lesquelles la méthode onMessage() de votre bean MDB traite un message.
- Cliquez sur OK.
- Arrêtez, puis redémarrez le serveur d'applications.
Exemple
- Le port d'écoute démarre et alloue une unité d'exécution provenant du pool d'unités d'exécution, il crée également une transaction sur l'unité d'exécution.
- L'unité d'exécution appelle la méthode receive() afin de surveiller les messages.
- Après 110 secondes, un message s'affiche sur la destination.
- L'unité d'exécution supprime le message de la destination et appelle la méthode onMessage() du bean MDB pour commencer à traite le message.
- Après dix secondes, le délai d'expiration de la transaction est atteint. Le serveur d'applications marque la transaction pour annulation.
- Après cinq secondes, la méthode onMessage() finit le traitement du message et tente de valider la transaction.
- 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.