Looks normal - but it is really a spring question. Check out http://docs.spring.io/autorepo/docs/spring-framework/4.0.x/javadoc-api/org/springframework/jms/listener/DefaultMessageListenerContainer.html and in particular http://docs.spring.io/autorepo/docs/spring-framework/4.0.x/javadoc-api/org/springframework/jms/listener/DefaultMessageListenerContainer.html#setTaskExecutor-java.util.concurrent.Executor-
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com> 2016-08-25 16:44 GMT+02:00 KDillon <[email protected]>: > I have two classes > > @Path("/") > public class HelloWorld { > > @Resource(name = "AnswerQueue") > private Queue AnswerQueue; > > @Resource > private ConnectionFactory connectionFactory; > > @GET > public String home(){ > try { > Connection connection = connectionFactory. > createConnection(); > connection.start(); > > // Create a Session > Session session = connection.createSession(false, > Session.AUTO_ACKNOWLEDGE); > > // Create a MessageProducer from the Session to > the Topic or Queue > MessageProducer producer = session.createProducer( > AnswerQueue); > > MessageConsumer consumer1 = session.createConsumer( > AnswerQueue); > consumer1.setMessageListener(new > Consumer("Consumer1")); > > MessageConsumer consumer2 = session.createConsumer( > AnswerQueue); > consumer2.setMessageListener(new > Consumer("Consumer2")); > > > for(int i=0; i<1000; i++){ > // Create a message > TextMessage message = > session.createTextMessage("Hello World! " + i); > message.setStringProperty(" > JMSXGroupID","group1"); > > // Tell the producer to send the message > producer.send(message); > } > > > }catch(JMSException e){ > > } > > return "Hello World"; > } > } > > > public class Consumer implements MessageListener { > private String consumerName; > > public Consumer(String consumerName) { > this.consumerName = consumerName; > } > > public void onMessage(Message message) { > TextMessage textMessage = (TextMessage) message; > try { > System.out.println(consumerName + " " + > Thread.currentThread().getId() + > " received " > + textMessage.getText()); > } catch (JMSException e) { > e.printStackTrace(); > } > } > > } > > The output I see when I hit the end point is > > Consumer1 97 received Hello World! 13 > Consumer1 97 received Hello World! 14 > Consumer1 97 received Hello World! 15 > Consumer1 99 received Hello World! 16 > Consumer1 99 received Hello World! 17 > ...... > Consumer1 99 received Hello World! 237 > Consumer1 99 received Hello World! 238 > Consumer1 97 received Hello World! 239 > Consumer1 97 received Hello World! 240 > Consumer1 97 received Hello World! 241 > Consumer1 97 received Hello World! 242 > Consumer1 97 received Hello World! 243 > Consumer1 97 received Hello World! 244 > Consumer1 97 received Hello World! 245 > > > I would see two different threads handling the messages and it would go > back > and forth between them. Is it normal to see different threads handling the > message? I would've expected one thread to handle everything. > > > > -- > View this message in context: http://tomee-openejb.979440. > n4.nabble.com/JMSXGroupID-and-TomEE-s-JMS-Connection- > Factory-tp4679868p4679885.html > Sent from the TomEE Users mailing list archive at Nabble.com. >
