Я использую Spring-jms с очередью sqs для отправки сообщений, я пытаюсь найти способ остановить и запустить прослушиватель jms (@JmsListener), для этой цели я использую 'JmsListenerEndpointRegistry', который останавливается и запускаетсяслушатель.
Но моя проблема в том, что после запуска прослушивателя я получаю дублирующиеся сообщения из очереди одновременно.После запуска прослушивателя jms, извлекающий 10 сообщений из очереди из 10, по крайней мере, 1 сообщение, дублируется, а после обработки 10 сообщений извлекает пару одинаковых сообщений.
DefaultJmsListenerContainerFactory configuration:
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConcurrency("10-20");
factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);
factory.setConnectionFactory(this.connectionFactory);
factory.setDestinationResolver(new DynamicDestinationResolver());
Код для отключения @ JmsListener
@JmsListener(id = "testListener", destination = "test-queue")
@Autowired
private JmsListenerEndpointRegistry _listener;
_listener.getListenerContainer("testListener").stop();
OR
_listener.stop();
Для запуска прослушивателя:
_listener.getListenerContainer("testListener").start();