Spring注释等效于jms:listener-container

时间:2014-07-21 18:57:50

标签: java spring spring-mvc

我正在使用Spring查看JMS,并希望在我的MVC webapp启动时创建特定队列的一些并发使用者。

我在SO(https://stackoverflow.com/a/6861144)上看到了以下XML配置:

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

我在Java中使用Spring配置而不是XML。有人可以帮忙解决Spring注释的语法吗?

我现有的JmsConfiguration.java看起来像:

@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;
    }

}

我搜索了很多例子,但到目前为止我发现的只是基于XML的。

1 个答案:

答案 0 :(得分:10)

您想要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;
}

阅读the JMS namespace documentation以获取有关将XML参数映射到Java参数的信息。