JMS - 在侦听器上使用动态选择器

时间:2016-10-03 23:13:05

标签: java spring jms

我有一个使用spring,jsf,primefaces的项目,我想用jsmTemplate实现JMS(activeMQ),我的想法是使用一个队列并且选择器获取并发送某些信息,选择器将动态变化,所以我想使用一个监听器,但我不知道如何定义选择器,

这是我的applicationContext.xml

<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616" />
    </bean>

    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="connectionFactory" />
        <property name="pubSubDomain" value="false"/>
    </bean>

    <bean id="springJmsProducer" class="com.SpringJmsProducer">
        <property name="jmsTemplate" ref="jmsTemplate" />
        <property name="destination" ref="queue.aclaraciones" />
    </bean>

        <bean id="springJmsConsumer" class="com.SpringJmsConsumer">
        <property name="jmsTemplate" ref="jmsTemplate" />
        <property name="destination" ref="queue.aclaraciones" />
    </bean>


    <!-- Opcion para tener un listener escuchando siempre -->
    <bean id="queue.aclaraciones" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg value="queue.aclaraciones" />
    </bean>

<bean id="messageListener" class="com.ExampleListener" />

    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="destination" ref="queue.aclaraciones"/>
        <property name="messageListener" ref="messageListener" />
    </bean>

这是我的倾听者:

public class ExampleListener implements MessageListener {

    public void onMessage(Message message) {
        if (message instanceof TextMessage) {
            try {
                System.out.println(((TextMessage) message).getText());
            }
            catch (JMSException ex) {
                throw new RuntimeException(ex);
            }
        }
        else {
            throw new IllegalArgumentException("Message must be of type TextMessage");
        }
    }

}

是否可以做类似的事情?

提前感谢。

0 个答案:

没有答案