On 02/19/2016 02:35 AM, mayuraviraj wrote: > While I was analysing how activemq do it async send internally I found > following approach to get async response. ( This is using activemq producer > implementation). Unfortunately i had to abandon PooledConnectionFactory > since PooledConnection does not have a way to return ActiveMQMessageProducer > ( it has method with protected access). However I believe even-though > following code using only once connection since sessions are created in > separate thread, performance won't be impacted. > > ActiveMQConnectionFactory factory = new > ActiveMQConnectionFactory(brokerURL); > factory.setUseAsyncSend(true); > Connection connection = connectionFactory.createConnection(); > connection.start(); > Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); > MessageProduer producer = session.createProducer(destination); > Queue queue = session.createQueue(qName); > ((ActiveMQMessageProducer)producer).send(queue, message, new AsyncCallback() > { > @Override > public void onSuccess() { > > } > > @Override > public void onException(JMSException exception) { > > } > };); > > > > -- > View this message in context: > http://activemq.2283324.n4.nabble.com/Identify-ActiveMQ-asyncrhonous-message-failures-tp4707716p4707854.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. > The use of the configuration option factory.setUseAsyncSend(true); won't have any effect on the send in this case.
Also keep in mind that you will need to wait for all the onComplete callbacks to receive the ACK from the broker to be sure all your sends are successful which will lower the performance to something closer to what you saw with non-async sends. -- Tim Bish twitter: @tabish121 blog: http://timbish.blogspot.com/