Как повторно отправить сообщения из очереди X-DEAD-LETTERS в другую? - PullRequest
0 голосов
/ 10 июля 2020

Вот мои две очереди RabbitMQ и метод:

private final Queue igListenerQueue;
private final Queue igDlxQueue;

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

Мне нужно взять n = messageCount сообщений из DlxQueue и переместить их в 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);
}

Как мне это сделать?

1 Ответ

1 голос
/ 10 июля 2020

Добавьте метод @RabbitListener для использования из очереди и отправки их в другую очередь с помощью RabbitTemplate.

Пример есть в документации Spring Cloud Stream .

...