Using messageSelector with AbstractMessageListenerContainer Spring Framework

715 Views Asked by At

I want to use messageSelector String which is inside the class AbstractMessageListenerContainer.class and here is the XML Configurations that i am giving.

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

After giving this configuration, when i start tomcat, my application is not getting started.

Where as when i give the config as below and start tomcat, i am able to start my application and working as expected. xyzResponseHandler is referencing to Class file where i am implementing

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>

What wrong i am doing in the First Config. Can you please correct me if i am going in wrong direction. Basically i want to filter the message using messageSelector.

1

There are 1 best solutions below

0
On

In DefaultMessageListenerContainer the property messageListener should be either a standard JMS MessageListener object or a Spring SessionAwareMessageListener object.

Refer the below spring doc

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

But you are referring to a bean of another ListenerContainer.