我正在使用Jboss AS 7.1.1,我需要查看DLQ(死信队列)中的消息。
我尝试为其编写一个简单的MDB:
@MessageDriven(messageListenerInterface = MessageListener.class, activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/queue/DLQ"),
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "1") })
public class DLQMDB implements MessageListener{
public void onMessage(Message message) {
try {
process(message);
} ...
}
}
我编写了另一个MDB,该MDB引发错误,因此消息将发送到DLQ,但是DLQ MDB从未触发。
我不知道是否是因为DLQ中没有消息或MDB定义不正确。
我究竟做错了什么?还有其他方法可以查看DLQ中的消息(例如日志记录,管理界面)吗?
最佳答案
终于成功了,我遇到了配置问题:
<address-setting match="jms.queue.MetricEvents">
<dead-letter-address>jms.queue.MyQueue</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-delivery-attempts>0</max-delivery-attempts>
<max-size-bytes>10485760</max-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
</address-setting>
一旦我删除:
<max-delivery-attempts>0</max-delivery-attempts>
一切正常。