I am using oracle Advanced Queuing (AQ JMS). I am trying to use multiple threads to use jms queue using QueueReceiver.
Question This plug model has multiple threads, but performance is still close to a single-threaded model. How to increase the consumption of the queue?
Below is the snipet code:
final QueueReceiver queueReceiver = getQueueReceiver(queueSession); qConn.start(); //THREAD POOL SIZE final int threadPoolSize = getThreadCount(); final ExecutorService executor = Executors.newFixedThreadPool(threadPoolSize); for (int i = 0; i < threadPoolSize; i++) { executor.submit(new MessageWorker(queueReceiver)); }
And the working message code is as follows:
class MessageWorker extends Thread { MessageConsumer messageConsumer; public MessageWorker(MessageConsumer subs) { this.messageConsumer = subs; } @Override public void run() { try { while (true) { try { Message msg = messageConsumer.receive(); if (null != msg) {
java multithreading jms
gpa
source share