Обмен мертвыми сообщениями в очередях RabbitMQ
Есть две предварительно настроенные очереди, одна из которых хранит в себе "мертвые" сообщения
@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", rabbitIgListenerProperties.getExchangeName());
return new Queue(rabbitIgDlxProperties.getQueueName(), true, false, false, args);
}
Есть эйндпоинт, задача которого - взять n мертвых сообщений из очереди и вернуть в изначальную
@WriteOperation
public void sendDeadMessages(String serviceName, Integer messageCount) {
//TODO: realize messages returning
}
Как это осуществить? Пробовал через new ConnectionFactory().newConnection().createChannel() но пока безуспешно