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
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.
- 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é.