-
1. Re: Non-blocking producers not working
jbertram Nov 5, 2012 10:28 PM (in response to manu_1185)What address-full-policy are you using?
-
2. Re: Non-blocking producers not working
manu_1185 Nov 5, 2012 11:50 PM (in response to jbertram)The address-full-policy being used was BLOCK. Now I have changed it to PAGE. But still in the stack trace, I can see threads getting blocked in ChannelImpl.sendBlocking. Don't know if I am right here, but hornetq code suggests that the threads should go to ChannelImpl.sendBatched (if it works correctly).
-
3. Re: Non-blocking producers not working
clebert.suconic Nov 6, 2012 12:35 AM (in response to manu_1185)Are you using transactions?
session.commit() or session.rollback() will also make a blocked call.
I don't have the stack trace from you.. so that's my best guess.
-
4. Re: Non-blocking producers not working
clebert.suconic Nov 6, 2012 12:37 AM (in response to clebert.suconic)You need to send it non-transactionally if you don't want it blocking. (there's no point on making a transaction if you want it unblocked. if you don't want to block means you can afford losing messages in case of failures... so no point on committs then)
-
5. Re: Non-blocking producers not working
manu_1185 Nov 6, 2012 1:05 AM (in response to clebert.suconic)We are already using non-transacted sessions. We have also set journal-sync-transactional and journal-sync-non-transactional to false. Given below is the stack trace I am getting:
Thread "pool-1-thread-20":
at org.hornetq.core.protocol.core.impl.ChannelImpl.sendBlocking(org.hornetq.core.protocol.core.Packet)
at org.hornetq.core.client.impl.ClientProducerImpl.doSend(org.hornetq.api.core.SimpleString, org.hornetq.api.core.Message)
at org.hornetq.core.client.impl.ClientProducerImpl.send(org.hornetq.api.core.SimpleString, org.hornetq.api.core.Message)
at org.hornetq.jms.client.HornetQMessageProducer.doSend(javax.jms.Message, long, org.hornetq.jms.client.HornetQDestination)
at org.hornetq.jms.client.HornetQMessageProducer.send(javax.jms.Destination, javax.jms.Message, int, int, long)
at com.bsb.hike.pubsub.jms.JMSProducer.send(javax.jms.Destination, javax.jms.TextMessage, int, int, long)
at com.bsb.hike.pubsub.jms.JMSProducer.send(java.lang.String, com.bsb.hike.common.HikeMessage)
at com.bsb.hike.pubsub.ProducerPool$MessageSendTask.run()
at java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker)
at java.util.concurrent.ThreadPoolExecutor$Worker.run()
at java.lang.Thread.run()
-
6. Re: Non-blocking producers not working
manu_1185 Nov 6, 2012 1:27 AM (in response to manu_1185)I just checked the connection factory instance. block-on-durable-send is still coming to be true (though I have set it to be false in the configuration). I programatically set it to false and now threads are not blocking.