1

構成可能な数のメッセージセレクターを持つキューにメッセージがあるという要件があります。これらのメッセージを並行して処理する必要がある場所。

慎重に検討した結果、複数の DefaultMessageListenerContainers を使用すると良い結果が得られるようになりました。

だから私はすべてを構成しました

<bean id="parallelProcess"
      class="org.springframework.jms.listener.DefaultMessageListenerContainer"  scope="prototype">
    <property name="connectionFactory" ref="jmsConnectionFactory"/>
    <property name="autoStartup" value="false"/>
    <property name="destinationName" value="parallel.process.queue"/>
    <property name="messageListener" ref="messageProcessor"/>
</bean>

その場で DefaultMessageListenerContainers を作成する

for (String selector : messageSelectors.getSelectors()) {
        parallelProcess.setMessageSelector("Message" + " = '" + selector + "'");
        parallelProcess.start();
    }

問題は、3 つのセレクターがある場合、最後の 1 つのみに対して DefaultMessageListenerContainer を作成していることです。つまり、selectors={"TYPE1", "TYPE3", "TYPE3"}の場合

TYPE3 のメッセージのみがメッセージ リスナーにキャッチされます

前もって感謝します

4

1 に答える 1