[ 
https://issues.apache.org/jira/browse/AMQ-3538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13126448#comment-13126448
 ] 

rikky commented on AMQ-3538:
----------------------------

The unit tests are as below:

Service Code:
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Server
{

        public static void main(String[] args) throws JMSException
        {
                String url ="tcp://192.168.230.253:61616";
                ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory(url);
                Connection conn = factory.createConnection();
                conn.start();
                final Session session = conn.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
                Destination dst = session.createQueue("tmp");
                MessageConsumer consumer = session.createConsumer(dst);
                while(true)
                {
                        TextMessage reqMsg = (TextMessage) consumer.receive();
                        Destination reply = reqMsg.getJMSReplyTo();
                        MessageProducer producer = 
session.createProducer(reply);
                        TextMessage replyMsg = 
session.createTextMessage(reqMsg.getText());
                        producer.send(replyMsg);
                        producer.close();
                }               
        }

}

Client Code:
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueRequestor;
import javax.jms.QueueSession;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Client
{

        public static void main(String[] args) throws JMSException
        {
                String url ="tcp://192.168.230.253:61616";
                ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory(url);
                Connection conn = factory.createConnection();
                conn.start();
                
                Session session = conn.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
                Queue dst = session.createQueue("tmp");
                QueueRequestor request = new QueueRequestor((QueueSession) 
session, dst);
                Message msg = session.createTextMessage("gogo");
                
                try
                {
                        long s = System.currentTimeMillis();
                        for (int i = 0; i < 10; i++)
                        {
                                Message resp = request.request(msg);
                        }
                        long e = System.currentTimeMillis();
                        System.out.println( e - s);
                }
                finally
                {
                        session.close();
                }
                
                conn.close();
        }

}

It took about 4000ms to finish the client code, but if i change the sending 
message size to 30k, it took only 300ms.By the way, i just used the default 
Broker configuration.
Thanks.
                
> request-response performance is poor when the client and broker lie in 
> different machine
> ----------------------------------------------------------------------------------------
>
>                 Key: AMQ-3538
>                 URL: https://issues.apache.org/jira/browse/AMQ-3538
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: Broker
>    Affects Versions: 5.4.2, 5.5.0
>         Environment: JDK 1.6, windows 2008 server.
>            Reporter: rikky
>
> for example:          
> Message msg = session.createTextMessage("gogogo");            
>               try
>               {
>                       long s = System.currentTimeMillis();
>                       for (int i = 0; i < 100; i++)
>                       {
>                               Message resp = request.request(msg);
>                       }
>                       long e = System.currentTimeMillis();
>                       System.out.println( e - s);
>               }
>               finally
>               {
>                       session.close();
>               }
> execute the above codes, the performance is very poor, can only handle 
> 2-3messages/sec.
> but if i increase the message size to about 20k, then the performance 
> increase incredibly, can handle 50 messages/sec!
> maybe the broker use some strategy to block the outgoing message,if that is 
> true, any configuration to change that strategy?
> Thanks.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to