Как получить доступ к активному соединению / сеансу JMS в Spring Boot, который использует @JmsListener - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь восстановить сообщения, отправленные обратно в очередь ActiveMQ из-за недоступности места назначения. Я избегаю политики повторной доставки, поскольку она не соответствует моим требованиям. Мне нужно восстановить эти сообщения в точное время в моем приложении с помощью session.recover ().

В настоящее время я использую конфигурацию jms, близкую к стандартной, для весенней загрузки, которая позволяет использовать аннотацию @JmsListener. Однако я не могу найти способ получить дескриптор активного сеанса jms, который использует эта аннотация?

1 Ответ

1 голос
/ 07 марта 2019

Просто добавьте параметр Session к слушателю ...

@SpringBootApplication
public class So55038881Application {

    public static void main(String[] args) {
        SpringApplication.run(So55038881Application.class, args);
    }

    @JmsListener(destination = "so55038881")
    public void listen(String in, Session session) {
        System.out.println(in + ":" + session);
    }

    @Bean
    public ApplicationRunner runner(JmsTemplate template) {
        return args -> template.convertAndSend("so55038881", "foo");
    }

}

и

foo:Cached JMS Session: ActiveMQSession {id=ID:host.local-52659-1551967879238-4:1:1,started=true} java.lang.Object@5bad3a2d
...