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(); } } }