簡體   English   中英

JMS無法使用spring / jms消耗來自Oracle隊列的消息

[英]JMS Unable to consume messages from Oracle queue using spring/jms

我已經閱讀了Spring文檔並設置了Spring JMS偵聽器。 但是,即使我將消息添加到隊列中,我的代碼也沒有檢測到此消息。 我的spring配置如下:

<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;
}

}

[編輯:上面的設置正在成功運行]

我不明白為什么您FactoryBean實現連接到Spring DMLC destination屬性。 這顯然是不正確的,因為setDestination方法僅接受javax.jms.Destination類型。 您已經連接了connectionFactorymessageListener 這就是開始使用消息所需的全部。 如果刪除連接到destination屬性的testmq引用,則應該成功使用消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM