Example 4: Automatically stopping an MDB when no exception destination is specified

To prepare for a system resource becoming unavailable or a problem message, configure the system to stop the message-driven bean (MDB) automatically. Pour conserver l'ordre des messages, n'utilisez pas de destination d'exception.

Avant de commencer

Cette tâche suppose que vous avez déployé une application d'entreprise contenant un bean géré par message qui interagit avec des ressources système externes.

The destination to which the MDB listens must not use an exception destination, that is, the exception destination for the queue or topic space destination must be configured as none.

Pour exécuter cette tâche, vous avez besoin des informations suivantes :
  • L'application d'entreprise qui contient le bean géré par message.
  • Les ressources système externes dépendantes.
  • Une valeur 1 pour l'option Seuil d'échecs de messages séquentiels. Il s'agit du nombre maximal d'incidents de distribution de message séquentiels, au delà duquel le bean géré par message est arrêté. Cette propriété s'applique à des ensembles de messages.
    Remarque : Si la valeur de cette propriété est supérieure à 1, le système la rétablit automatiquement à 1 lorsqu'une destination d'exception est configurée sur "none".
  • A value of 5000 for the Fréquence entre deux échecs de message, that is, the time in milliseconds before a failing message is available to be delivered to the MDB. D'autres messages peuvent être distribués au cours de cette période, sauf si l'optionSeuil d'échecs de messages séquentiels et le nombre maximal d'accès concurrents ont la valeur 1.
  • Une valeur acceptable pour l'option Nombre maximal de remises par message, à savoir, le nombre maximal de tentatives de traitement d'un message défectueuses. Cette propriété s'applique à des messages spécifiques.

The JCA MBean emits JMX notifications to indicate that the MDB is paused, and that the MDB has resumed. Vous pourriez envisager de créer sur le MBean JCA un programme d'écoute de messages destiné à recevoir les notifications JMX.

Pourquoi et quand exécuter cette tâche

In this scenario, the enterprise application is a continuously running system that uses a deployed MDB to access an external system resource.

Lorsqu'un message d'incident (msg1 dans ce scénario) est rencontré, il est replacé dans la file d'attente.

Instead of msg1 being made available to the MDB immediately, it is hidden for the Fréquence entre deux échecs de message retry delay (five seconds in this scenario).

Lorsque le nombre de messages masqués atteint la limite Seuil d'échecs de messages séquentiels, le bean géré par message ne traite pas les messages ultérieurs jusqu'à ce que l'un des messages masqués redevienne disponible. Dans ce scénario, ce seuil est atteint dès que msg1 est masqué.

Lorsque le Fréquence entre deux échecs de message de msg1 arrive à expiration, msg1 n'est plus masqué et il est à nouveau traité.

Cette procédure est répétée jusqu'à ce que msg1 atteigne sa limite Nombre maximal de remises par message (cinq fois dans ce scénario).

After msg1 is unhidden for the fourth time, rolled back and rehidden, the Seuil d'échecs de messages séquentiels is reached and the MDB stops automatically. Une notification JMX est émise par le bean géré par message JCA et une entrée de journal prévient l'administrateur système que le bean géré par message s'est arrêté.

Procédure

  1. Accédez à l'application d'entreprise déployée qui contient le bean géré par message.
  2. A partir du bean géré par message, accédez à sa spécification d'activation JMS. Cliquez sur Ressources -> JMS->Spécifications d'activation -> nom_spécification_activation.
  3. Entrez la valeur 1 pour l'option Seuil d'échecs de messages séquentiels.
  4. Entrez une valeur de 5000 pour Fréquence entre deux échecs de message.
  5. Enregistrez la configuration.
  6. Accédez à la destination sur laquelle le bean géré par message est en mode écoute. Cliquez sur l'un des chemins suivants, comme approprié :
    • Intégration des services -> Bus -> nom_bus -> [Ressources de la destination] Destinations -> nom_file_attente
    • Intégration des services -> Bus -> nom_bus -> [Ressources de la destination] Destinations -> nom_espace_sujet
  7. Sous Destination d'exception, sélectionnez Aucun.
  8. Entrez une valeur de 5 dans Nombre maximal de remises par message.
  9. Sauvegardez les modifications de la configuration principale.
  10. Si vous recevez une notification JMX et une entrée de journal indiquant que le bean géré par message (ou le noeud final) a été interrompu, identifiez l'incident relatif à la ressource système que le bean géré par message utilisait. While the MDB is paused, because no exception destination is configured, msg1 remains on the queue. Aucun autre message n'est traité.
  11. If you resume the MDB but the problem with the failing message continues, the maximum failed deliveries limit is reached on the first retry of the message, but because no exception destination is configured, the message is not moved to another queue. Au lieu de cela, l'intégralité du point de file d'attente est bloqué pour l'ensemble des clients pendant Fréquence entre deux échecs de message l'intervalle avant une nouvelle tentative (cinq secondes dans ce scénario). Une fois ce délai écoulé, les clients recommencent. Si le message défectueux est toujours présent et qu'il échoue de nouveau, le point de file d'attente est bloqué pendant 5 secondes de plus. Cette procédure se poursuit jusqu'à ce que vous supprimiez le message défectueux de la file d'attente, en le supprimant manuellement ou en résolvant l'incident qui s'y rapporte, et en permettant ainsi à l'application destinataire de réussir le traitement.
  12. Log on to the administrative console again, navigate to the same enterprise application and click Resume on the administrative panel for the MDB. You can also resume the MDB by using scripting and the JCA MBean. La notification JMX initiale et l'entrée de journal indiquent le bean géré par message à utiliser pour reprendre le bean géré par message. Le bean géré par message commence à être piloté avec les messages qui se trouvent sur la destination.

Résultats

Vous avez configuré le système pour qu'il se protège des incidents de ressource externe tout en conservant l'ordre des messages.

Que faire ensuite

Lorsque le bean géré par message est repris, le MBean JCA émet une notification JMX pour indiquer que le bean géré par message fonctionne de nouveau. Les messages de la file d'attente sont utilisés, les messages ayant échoué font l'objet d'une nouvelle tentative et la transaction est validée.

Icône indiquant le type de rubrique Rubrique de tâche



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=tjn_mdb_0001_Ex4
Nom du fichier : tjn_mdb_0001_Ex4.html