dequeue oracle расширенная очередь - PullRequest
0 голосов
/ 11 ноября 2019

Мне нужно прочитать сообщения от оракула AQ. Я использую Spring boot 2.2.0.RELEASE. В настоящее время я могу читать сообщения, только когда мое весеннее загрузочное приложение уже запущеноНо если AQ уже поставил сообщения в очередь, они не удаляются. Я не могу понять, что не так.

Мой класс конфигурации:


@Configuration
@EnableJms
public class BridgeConfiguration {

    @Bean
    DataSource dataSource() throws SQLException {
        OracleDataSource dataSource = new OracleDataSource();
        dataSource.setUser("user");
        dataSource.setPassword("pwd");
        dataSource.setURL("jdbc:oracle:thin:host:1521/sid");
        dataSource.setImplicitCachingEnabled(true);
        dataSource.setFastConnectionFailoverEnabled(true);
        return dataSource;
    }

    @Bean
//    @Qualifier(value = "aqconnectionFactory")
    public QueueConnectionFactory aqconnectionFactory() throws Exception {
        return AQjmsFactory.getQueueConnectionFactory(dataSource());
    }

    @Bean
    public PlatformTransactionManager transactionManager() throws Exception {
        JmsTransactionManager jmsTransactionManager = new JmsTransactionManager();
        jmsTransactionManager.setConnectionFactory(aqconnectionFactory());
        return jmsTransactionManager;
    }



    @Bean
    public JmsListenerContainerFactory jmsListenerContainerFactory() throws Exception {
         DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(aqconnectionFactory());
        factory.setTransactionManager(transactionManager());
        factory.setSessionTransacted(true);
        return factory;
    }

}

Мой класс слушателя

@Component
public class AqDaoImpl {

@JmsListener(destination = "IBMBRIDGE_OUT", concurrency = "3-10")
    public void getMessage(String message) {
        try{
            System.out.println(message + " received on " + Thread.currentThread().getName());
        }catch (Exception e ){
            System.out.println(e);
        }
    }
}

Я ожидаю, что смогу получитьуже в очереди сообщения. Но если я выключаю свое приложение, ставлю в очередь некоторые сообщения в oracle aq, а затем включаю мое приложение, оно не может получить это сообщение, сообщения остаются в oracle aq.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...