使用带有AbstractMessageListenerContainer Spring Framework的messageSelector

时间:2015-06-25 06:46:22

标签: java spring jms spring-jms

我想使用在AbstractMessageListenerContainer.class类中的messageSelector String,这里是我给出的XML配置。

<bean id="jmsContainer"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="autoStartup" value="${listener.setup}" />
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="destination" ref="paymentResponseQueue" />
    <property name="messageListener" ref="myAbstractListener" />

</bean>

<bean id="myAbstractListener"
    class="org.springframework.jms.listener.AbstractMessageListenerContainer">
    <property name="autoStartup" value="${listener.setup}" />
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="destination" ref="paymentResponseQueue" />
    <property name="messageListener" ref="authorisationResponseHandler" />
<property name="messageSelector" value="JMSCorelationId = 'AMM--AS1-6e07c3092bc94f77a183889ababeabc2'" />
</bean>

在提供此配置后,当我启动tomcat时,我的应用程序无法启动。

当我给出如下配置并启动tomcat时,我能够启动我的应用程序并按预期工作。 xyzResponseHandler引用了我正在实现的类文件

public class xyzResponseHandler implements MessageListener{

}

<bean id="jmsContainer"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="autoStartup" value="${listener.setup}" />
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="destination" ref="paymentResponseQueue" />
    <property name="messageListener" ref="xyzResponseHandler" />

</bean>

我在First Config中做错了什么。如果我朝错误的方向走,请你纠正我。基本上我想使用messageSelector过滤消息。

1 个答案:

答案 0 :(得分:0)

在DefaultMessageListenerContainer中,属性messageListener应该是标准JMS MessageListener对象或Spring SessionAwareMessageListener对象。

参考下面的春季文档

http://docs.spring.io/spring-framework/docs/3.0.5.RELEASE/api/org/springframework/jms/listener/AbstractMessageListenerContainer.html#setMessageListener(java.lang.Object)

但是你指的是另一个ListenerContainer的bean。