Halott levél csatorna (DEAD Letter QUEUE)

Az előző példában hibát szimuláltunk a tranzakció visszavonásával. Alapértelmezetten az újrapróbálkozások száma végtelen, ezért állítsuk be az előző példánál, hogy csak 1x próbálja újra az üzenet kézbesítést: [<wildfly install dir>\standalone\configuration\standalone-full.xml -ban keressük meg a következő részt:

<address-setting

és adjuk hozzá az alábbi attribútumot:

max-delivery-attempts="1" 

Ilyenkor az üzenet a dead letter queue-ra kerül 1 próbálkozás után.

A Dead Letter Queue-ról a következő üzenet-vezérelt bean (MDB) leveszi az üzeneteket:

  package org.ait;
 
  import javax.ejb.ActivationConfigProperty;
  import javax.ejb.MessageDriven;
  import javax.jms.JMSException;
  import javax.jms.Message;
  import javax.jms.MessageListener;
  import javax.jms.TextMessage;
 
  @MessageDriven(name = "DeadLetter", activationConfig = {
          @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
          @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/DLQ") })
  public class DeadLetterQueue implements MessageListener {
      public void onMessage(final Message message) {
          try {
              TextMessage textMessage = (TextMessage) message;
              String text = textMessage.getText();
              System.out.println("DEAD Letter QUEUE got a message:" + text);
          } catch (JMSException e) {
              e.printStackTrace();
          }
      }
  }