Я использую аннотации @EnableJms и @JmsListener для регистрации прослушивателя очереди в моем приложении, основываясь на этом учебном пособии.Я подключаюсь к IBM MQ, получаю фабрику соединений с помощью jndi.Я читал о режимах подтверждения и т. Д., Но все же это для меня новость.И моя проблема в том, что сообщение не возвращается в очередь (слушатель больше никогда не вызывается).
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory
= new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setSessionTransacted(true);
factory.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE); //I have tried also CLIENT_ACKNOWLEDGE
return factory;
}
@JmsListener(containerFactory = "jmsListenerContainerFactory", destination = "myQueue")
@SendTo("secondQueue")
public String testListener(String message){
if(true) throw new NullPointerException();
else return message;
}
Любая помощь будет высоко ценится.У меня был бы также второй вопрос.Из того, что я понимаю, если бы я хотел реализовать какую-либо операцию с базой данных, единственный способ откатить коммит (если после этого что-то пошло не так) - это создать менеджер транзакций?Если нет, мне нужно будет обнаружить дублирующееся сообщение.