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.