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.