1

Springのドキュメントに従い、SpringJMSリスナーをセットアップしました。それでも、キューにメッセージを追加しても、コードはこれを検出しません。私の春の設定は次のとおりです。

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

}

[編集:上記の設定は現在正常に機能しています]

4

1 に答える 1

0

FactoryBean実装を Spring DMLCdestinationプロパティに配線している理由がわかりません。setDestinationメソッドは型のみを受け入れるため、これは明らかに正しくありませんjavax.jms.Destination。と を配線しましconnectionFactorymessageListener。メッセージの消費を開始するために必要なのはこれだけです。testmqプロパティに配線した参照を削除するdestinationと、メッセージは正常に消費されるはずです。

于 2013-03-12T15:36:14.687 に答える