Spring注释等效于jms:listener-container

smi*_*tan 10 java spring spring-mvc

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

我在SO(/sf/answers/480280111/)的其他地方看到了以下XML配置:

<jms:listener-container concurrency="10">
    <jms:listener destination="some.queue" ref="fooService" method="handleNewFoo"/>
</jms:listener-container>
Run Code Online (Sandbox Code Playgroud)

我在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;
    }

}
Run Code Online (Sandbox Code Playgroud)

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

gpe*_*che 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;
}
Run Code Online (Sandbox Code Playgroud)

有关将XML参数映射到Java参数的信息,请阅读JMS命名空间文档.