首页 > 解决方案 > 如何将消息从 X-DEAD-LETTERS 队列重新发送到另一个队列?

问题描述

这是我的两个 RabbitMQ 队列和方法:

private final Queue igListenerQueue;
private final Queue igDlxQueue;

@WriteOperation
public void sendDeadMessages(String serviceName, Integer messageCount) {
    //igListenerQueue.addArgument("messages", igDlxQueue.getArguments());
}

我需要从 DlxQueue 中获取 n=messageCount 消息并将它们重新定位到 igListenerQueue。这是我的队列豆:

@Bean(IG_LISTENER)
@Profile("!qa")
public Queue igListenerQueue() {
    Map<String, Object> args = new HashMap<>();
    args.put("x-dead-letter-exchange", rabbitIgDlxProperties.getExchangeName());
    args.put("x-dead-letter-routing-key", rabbitIgDlxProperties.getRoutingKey());
    return new Queue(rabbitIgListenerProperties.getQueueName(), true, false, false, args);
}

@Bean
@Profile("!qa")
public Queue igDlxQueue() {
    Map<String, Object> args = new HashMap<>();
    args.put("x-dead-letter-exchange", rabbitListenerProperties.getExchangeName());
    return new Queue(rabbitIgDlxProperties.getQueueName(), true, false, false, args);
}

我该怎么做?

标签: javarabbitmqspring-rabbitrabbitmq-exchange

解决方案


添加一个@RabbitListener从队列中消费的方法,并使用RabbitTemplate.

Spring Cloud Stream 文档中有一个示例。


推荐阅读