Red Hat Training
A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform
18.8.11. Définir l'expiration des messages
Introduction
Les messages envoyés peuvent être définis de façon à pouvoir expirer sur le serveur, s'ils ne sont pas livrées au consommateur après un certain lapse de temps (en millisecondes). À l'aide de Java Messaging Service (JMS) ou de l'API de base de HornetQ, le délai d'expiration est réglable sur le message directement. Par exemple :
// message will expire in 5000ms from now message.setExpiration(System.currentTimeMillis() + 5000);
JMS
MessageProducer
inclut un paramètre TimeToLive
qui contrôle l'expiration de message du message qu'il envoie :
// messages sent by this producer will be retained for 5s (5000ms) before expiration producer.setTimeToLive(5000);
Les messages expirés qui sont consommés à partir d'une adresse d'expiration ont les propriétés suivantes :
- _HQ_ORIG_ADDRESS
Une propriété de string qui contient l'adresse d'origine du message expiré.
- _HQ_ACTUAL_EXPIRY
Une propriété longue qui contient l'heure d'expiration du message expiré.
Au lieu de définir le paramètre time-to-live sur le producer JMS, vous pouvez également le définir au fur et à mesure. Vous pouvez le faire en ajoutant le paramètres TTL à la méthode d'envoi du producer quand vous envoyez le message.
producer.send(message, DeliveryMode.PERSISTENT, 0, 5000)
Quand le dernier paramètres est TTL basé message.
Configurer les adresses d'expiration
Les adresses d'expiration de messages sont définies dans la configuration address-setting :
<!-- expired messages in exampleQueue will be sent to the expiry address expiryQueue --> <address-setting match="jms.queue.exampleQueue"> <expiry-address>jms.queue.expiryQueue</expiry-address> </address-setting>
Si les messages sont expirés et qu'aucune adresse d'expiration n'est spécifiée, les messages sont tout simplement retirés de la file d'attente et abandonnés.
Configurer un Thread Reaper d'expiration
Un thread reaper inspecte périodiquement les files d'attente pour valider si les messages ont expiré.
- message-expiry-scan-period
La fréquence de balayage des files d'attente pour détecter les messages expirés (en millisecondes, valeur par défaut 30000ms, définie à -1 pour désactiver le thread reaper).
- message-expiry-thread-priority
Priorité de thread reaper. Doit se situer en entre 0 et 9, 9 étant la plus haute priorité, et la valeur par défaut étant 3.