JMS Невозможно использовать сообщения из очереди Oracle с помощью spring/jms

Я следил за документацией Spring и настроил прослушиватель Spring JMS. Тем не менее, даже если я добавлю сообщение в очередь, мой код этого не обнаружит. Моя весенняя конфигурация выглядит следующим образом:

<bean id="dataSourceListener" class="oracle.jdbc.pool.OracleDataSource">
    <property name="URL" value="xxx"/>
    <property name="user" value="xxx"/>
    <property name="password" value="xxx"/>
</bean>

<bean id="jmsConnectionFactory" class="OracleAqFactoryBean">
    <property name="dataSource" ref="dataSourceListener" />
</bean>

<jms:listener-container connection-factory="jmsConnectionFactory" acknowledge="transacted" concurrency="1-5">
    <jms:listener destination="queuename" ref="myMessageListener"/>
</jms:listener-container>

<bean id="myMessageListener" class="Listener"/>

Моя Java выглядит следующим образом:

Мой пользовательский слушатель:

class Listener implements MessageListener {

    @Override
    void onMessage(Message message) {
        // code to handle message is here
    }
}

И мой OracleAqFactoryBean:

public class OracleAqFactoryBean implements FactoryBean {
private DataSource dataSource;

public void setDataSource(DataSource dataSource) {
    this.dataSource = dataSource;
}

@Override
public Object getObject() throws Exception {
    return AQjmsFactory.getConnectionFactory( dataSource );
}

@Override
public Class<?> getObjectType() {
    return ConnectionFactory.class;
}

@Override
public boolean isSingleton() {
    return true;
}

}

[РЕДАКТИРОВАТЬ: НАСТРОЙКА ВЫШЕ ТЕПЕРЬ РАБОТАЕТ УСПЕШНО]


person user1740752    schedule 11.03.2013    source источник


Ответы (1)


Я не понимаю, почему вы подключаете реализацию FactoryBean к свойству Spring DMLC destination. Это явно неверно, поскольку файл setDestinationmethod принимает только тип javax.jms.Destination. Вы подключили connectionFactory и messageListener. Это все, что нужно, чтобы начать потреблять сообщения. Если вы удалите ссылку testmq, которую вы связали со свойством destination, сообщения должны быть успешно обработаны.

person bsnyder    schedule 12.03.2013
comment
Привет, спасибо за ваш ответ. Я изменил свою конфигурацию, и приведенная выше настройка теперь работает. Однако я попытался перенести это в приложение Grails, и оно не использует никаких сообщений из очереди. Я не думаю, что кто-то пробовал это раньше и имеет какие-либо идеи? - person user1740752; 12.03.2013