I've add setUseAsyncSend(true) to connection factory and the performance boost to 2k-4k/sec using my notebook depend on CPU idle. ActiveMQ is very robust. My problem resolved, many thanks for the help.
James.Strachan wrote: > > Also if you don't want to block until each message has been written to > disk before sending the next one, you could use async sending which > boosts performance a fair bit. > > For more details see... > http://open.iona.com/wiki/display/ProdInfo/FUSE+Message+Broker+Performance+Tuning+Guide > > On 19/11/2007, Vinod Venkatraman <[EMAIL PROTECTED]> wrote: >> >> Ur sender code looks fine to me, are u sure ur messages are not being >> persisted by ActiveMQ. >> Persistence can slow down send considerably. Check ur ActiveMQ config >> file >> for persistence. >> >> http://activemq.apache.org/persistence.html >> >> >> >> andriy_heikal wrote: >> > >> > Hi Guys, >> > >> > I'm newbie on ActiveMQ. I've been trying to develop JMS using ActiveMQ. >> I >> > create 2 file >> > first as sender : >> > package tutorial.jms; >> > >> > import java.util.Date; >> > >> > import javax.jms.Connection; >> > import javax.jms.ConnectionFactory; >> > import javax.jms.JMSException; >> > import javax.jms.MessageProducer; >> > import javax.jms.Queue; >> > import javax.jms.Session; >> > import javax.jms.TextMessage; >> > >> > import org.apache.activemq.ActiveMQConnection; >> > import org.apache.activemq.ActiveMQConnectionFactory; >> > >> > public class HelloQueueSender { >> > public static void main(String[] args) throws JMSException { >> > ConnectionFactory factory = new ActiveMQConnectionFactory( >> > ActiveMQConnection.DEFAULT_USER, >> > ActiveMQConnection.DEFAULT_PASSWORD, >> > ActiveMQConnection.DEFAULT_BROKER_URL); >> > Date mulai = new Date(); >> > System.out.println("Start Sending : " + mulai); >> > >> > Connection conn = factory.createConnection(); >> > >> > Session sess = conn.createSession(false, >> > Session.AUTO_ACKNOWLEDGE); >> > >> > Queue destination = sess.createQueue("test"); >> > >> > MessageProducer prod = sess.createProducer(destination); >> > TextMessage msg = sess.createTextMessage(); >> > msg.setText("Hello JMS"); >> > >> > >> > int i = 1; >> > while (i<=5000){ >> > prod.send(msg); >> > i++; >> > } >> > >> > prod.close(); >> > sess.close(); >> > conn.close(); >> > Date selesai = new Date(); >> > System.out.println("End Sending : " + selesai); >> > } >> > } >> > >> > >> > second is for receiver : >> > package tutorial.jms; >> > >> > import javax.jms.Connection; >> > import javax.jms.ConnectionFactory; >> > import javax.jms.JMSException; >> > import javax.jms.Message; >> > import javax.jms.MessageConsumer; >> > import javax.jms.Queue; >> > import javax.jms.Session; >> > import javax.jms.TextMessage; >> > >> > import org.apache.activemq.ActiveMQConnection; >> > import org.apache.activemq.ActiveMQConnectionFactory; >> > >> > public class HelloQueueReceiver { >> > public static void main(String[] args) throws Exception { >> > ConnectionFactory factory = new ActiveMQConnectionFactory( >> > ActiveMQConnection.DEFAULT_USER, >> > ActiveMQConnection.DEFAULT_PASSWORD, >> > ActiveMQConnection.DEFAULT_BROKER_URL); >> > >> > Date mulai = new Date(); >> > System.out.println("Start Receiving : " + mulai); >> > Connection conn = factory.createConnection(); >> > >> > Session sess = conn.createSession(false, >> > Session.AUTO_ACKNOWLEDGE); >> > >> > Queue destination = sess.createQueue("test"); >> > >> > MessageConsumer consumer = sess.createConsumer(destination); >> > conn.start(); >> > int counter = 1; >> > while(true) { >> > Message msg = consumer.receive(1000); >> > if (msg == null) break; >> > if (msg instanceof TextMessage) { >> > TextMessage txtmsg = (TextMessage) msg; >> > } >> > } >> > >> > consumer.close(); >> > sess.close(); >> > conn.close(); >> > Date selesai = new Date(); >> > System.out.println("End Receiving : " + selesai); >> > } >> > } >> > ======================================================= >> > What my concern is sender performance, for 5000 messages takes 135sec >> or >> > 37msg/sec but receiver performance is very good at 2500msg/sec. My >> > question is why it so be different, I guess my code is wrong. >> > Can anybody help me solved this problem? >> > >> > Regards, >> > >> > Heikal >> > >> > >> > >> >> -- >> >> View this message in context: >> http://www.nabble.com/ActiveMQ-Sending-Performance-tf4833383s2354.html#a13830613 >> >> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >> >> > > > -- > James > ------- > http://macstrac.blogspot.com/ > > Open Source Integration > http://open.iona.com > > -- View this message in context: http://www.nabble.com/ActiveMQ-Sending-Performance-tf4833383s2354.html#a13849072 Sent from the ActiveMQ - User mailing list archive at Nabble.com.