SpringJMS和ActiveMQ在死信队列中的何处查看消息

SpringJMS和ActiveMQ在死信队列中的何处查看消息,jms,activemq,message-queue,spring-jms,dead-letter,Jms,Activemq,Message Queue,Spring Jms,Dead Letter,这是我的配置: @Bean ActiveMQConnectionFactory activeMQConnectionFactory() { String url = this.environment.getProperty("jms.broker.url"); ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(); connectionFactory.setBrokerU

这是我的配置:

@Bean
ActiveMQConnectionFactory activeMQConnectionFactory() {
    String url = this.environment.getProperty("jms.broker.url");
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
    connectionFactory.setBrokerURL(url);
    connectionFactory.setRedeliveryPolicy(redeliveryPolicy());
    return connectionFactory;
}

@Bean
public RedeliveryPolicy redeliveryPolicy() {
    RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
    redeliveryPolicy.setInitialRedeliveryDelay(500);
    redeliveryPolicy.setBackOffMultiplier(2);
    redeliveryPolicy.setUseExponentialBackOff(true);
    redeliveryPolicy.setMaximumRedeliveries(5);
    return redeliveryPolicy;
}
.....
这是我的消费者:

@Service("msgConsumer")
public class MessageConsumer {

    private static final String ORDER_RESPONSE_QUEUE = "thequeue.Q";

    @JmsListener(destination = ORDER_RESPONSE_QUEUE, containerFactory = "jmsListenerContainerFactory")
    public void receiveMessage(final Message<String> message) throws Exception {

        MessageHeaders headers =  message.getHeaders();
        LOG.info("Application : headers received : {}", headers);

        String response = message.getPayload();
        LOG.info("Application : response received : {}",response);

        if(response.equals("launch"))
            throw new Exception("Error");
    }
}
@服务(“msgConsumer”)
公共类消息消费者{
私有静态最终字符串顺序\u响应\u QUEUE=“thequeue.Q”;
@JmsListener(目的地=订单\响应\队列,containerFactory=“jmsListenerContainerFactory”)
public void receiveMessage(最终消息)引发异常{
MessageHeaders=message.getHeaders();
info(“应用程序:接收到的头:{}”,头);
字符串响应=message.getPayload();
LOG.info(“应用程序:收到的响应:{}”,响应);
if(response.equals(“启动”))
抛出新异常(“错误”);
}
}
因此,我将一条消息放入队列,其中payload=“launch”

我想测试事务,如果负载等于“launch”,它就会抛出一个异常

因此,多亏了重新交付政策,消费者尝试使用邮件5次。 在ActiveMq队列列表中的第五个之后,我没有看到我发送的消息

消息放在哪里?排在死信队列里? 在哪里可以看到带有“启动”消息的死信队列


谢谢。

ActiveMQ.DLQ
-请参阅

一旦消息的重新传递尝试超过为重新传递策略配置的maximumRedeliveries,就会向代理发送一个“毒药确认”,让代理知道该消息被视为毒药丸。然后,代理接收消息并将其发送到死信队列,以便稍后对其进行分析

ActiveMQ中的默认死信队列称为ActiveMQ.DLQ;所有不可交付的消息都将发送到此队列,这可能很难管理。因此,您可以在activemq.xml配置文件的目标策略映射中设置individualDeadLetterStrategy,它允许您为给定队列或主题指定特定的死信队列前缀。如果愿意,可以使用通配符应用此策略,以便所有队列都有自己的死信队列,如下例所示


您可以在控制台中看到DLQ;您可以像其他任何队列一样使用它。

因此,如果我有一个名为“myqueue.Q”的队列,那么DLQ的正确名称是什么?请阅读我为您指出的
ActiveMQ.DLQ
文档。默认情况下,所有内容都将转到相同的DLQ<代码>>因此,您可以在activemq.xml配置文件的目标策略映射中设置individualDeadLetterStrategy,这允许您为给定队列或主题指定特定的死信队列前缀哑问题:activemq.xml中的DLQ配置是在服务器中进行的,而不是在客户端,对吗?