简体   繁体   中英

Spring annotation equivalent for jms:listener-container

I'm looking into JMS using Spring and wish to create a some concurrent consumers of a particular queue when my MVC webapp starts up.

I've seen the following XML config elsewhere on SO ( https://stackoverflow.com/a/6861144 ):

<jms:listener-container concurrency="10">
    <jms:listener destination="some.queue" ref="fooService" method="handleNewFoo"/>
</jms:listener-container>

I'm using Spring configuration in Java as opposed to XML. Can someone please help out with the syntax for Spring annotation?

My existing JmsConfiguration.java looks like:

@Configuration
@ComponentScan(basePackages="net.domain.orders")
public class JmsConfiguration {

    @Bean
    public JmsTemplate jmsTemplate() {
        JmsTemplate jmsTemplate = new JmsTemplate();
        jmsTemplate.setDefaultDestination(new ActiveMQQueue("orders.queue"));
        jmsTemplate.setConnectionFactory(connectionFactory());
        return jmsTemplate;
    }

    @Bean
    public ActiveMQConnectionFactory connectionFactory() {
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
        activeMQConnectionFactory.setBrokerURL("tcp://localhost:61616");
        return activeMQConnectionFactory;
    }

}

I have searched many examples but all I have found so far are XML-based.

You want DefaultMessageListenerContainer :

@Bean
public DefaultMessageListenerContainer jmsListenerContainer() {
    DefaultMessageListenerContainer dmlc = new DefaultMessageListenerContainer();
    dmlc.setConnectionFactory(connectionFactory());
    dmlc.setDestination(new ActiveMQQueue("orders.queue"));

    // To schedule our concurrent listening tasks
    dmlc.setTaskExecutor(taskExecutor());

    // To perform actual message processing
    dmlc.setMessageListener(messageListener());

    dmlc.setConcurrentConsumers(10);

    // ... more parameters that you might want to inject ...
    return dmlc;
}

Read the JMS namespace documentation for information about mapping XML parameters to Java parameters.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM