activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From andriy_heikal <andriy_hei...@telkom.net>
Subject ActiveMQ + Jencks Performance
Date Mon, 10 Dec 2007 10:03:00 GMT

Hello all,

I'm implementing ActiveMQ in Spring environment and using Jencks for
consumer as a listener. Performance for   6000 messages sent in one time is
47msg/sec... but when testing ActiveMQ with simple java class I get about 3k
msg/sec. Whats the problem? can anybody help me? anyway my testing platform
is notebook with dual core 1.7GHz and 1.5GB memory. Please refer to my code
below.

My Producer code :
public class ProducerAndListener {
	
	    public static String  Producer(String input) throws JMSException {
	        
	    	boolean jmsSuccess = false;
	    	boolean isJMSException = false;
	    	javax.jms.Connection connection = null; 
	        javax.jms.Session session = null; 
	        while(!jmsSuccess)
	        {
	        	try {
						org.apache.activemq.ActiveMQConnectionFactory connectionFactory = new
org.apache.activemq.ActiveMQConnectionFactory(
"tcp://localhost:61616?jms.prefetchPolicy.all=100" ); 
						connectionFactory.setUseAsyncSend(true); // This is the magic words
"+connectionFactory.getBrokerURL());
						//connectionFactory.setBrokerURL("tcp://192.168.1.137:61616");
		                connection = connectionFactory.createConnection(); 
		                
		                session = connection.createSession( false,
javax.jms.Session.AUTO_ACKNOWLEDGE ); 
		                javax.jms.Destination destination = session.createQueue(
"sminderQueue" ); 
		                javax.jms.MessageProducer producer =
session.createProducer( destination ); 
		                producer.setDeliveryMode(
javax.jms.DeliveryMode.PERSISTENT ); 
		                connection.start(); 

		                javax.jms.TextMessage message =
session.createTextMessage(); 
	

		                        message.setText(input); 
		                        producer.send( message ); 

		               jmsSuccess = true;
		        }
		        catch ( javax.jms.JMSException je)
		        {
		        	if (!isJMSException)
		        		isJMSException = true;
		        	System.out.println("[ERROR][1] the jms error: "+je.toString());
		        }
		        catch ( Exception eOuter ) { 
		        	if (!isJMSException)
		        		System.out.println("[ERROR][3] the other error:
"+eOuter.toString()); 
		        } 
	        }

	                try { 
	                        if ( session != null ) session.close(); 
	                        if ( connection != null ) connection.close(); 
	                } 
	                catch ( Exception eInner ) { 
	                        eInner.printStackTrace(); 

	        }
	    	
	    	
	        return ("Sukses");
	    }

}

My Consumer code :
public class MessageConsumer implements MessageListener
{
	public MessageConsumer()
	{
	}
	
	public synchronized void onMessage(Message message)
	{
		String contentSMS = "";

		
		TextMessage textMessage = (TextMessage)message;

		

		System.out.println("####the content: "+textMessage);
	}

}


Spring Bean Conf :
<bean id="messageConsumer"
class="com.trendcom.app.sminder.webapp.jms.MessageConsumer"
autowire="byName"/>
    
    <bean id="transactionManager"
class="org.jencks.factory.TransactionManagerFactoryBean" singleton="true"/>
    
    <bean id="jencks" class="org.jencks.JCAContainer">
  		<property name="transactionManager" ref="transactionManager"/>
  		<property name="threadPoolSize" value="25"/>

  		<!-- the JCA Resource Adapter -->
  		<property name="resourceAdapter">
    		<bean id="activeMQResourceAdapter"
class="org.apache.activemq.ra.ActiveMQResourceAdapter">
      			<property name="serverUrl" value="tcp://localhost:61616"/>
    		</bean>
  		</property>
	</bean>
	
	<bean id="inboundConnectorA" class="org.jencks.JCAConnector">

  		<property name="jcaContainer" ref="jencks" />

  		<!-- subscription details -->
  		<property name="activationSpec">
    		<bean class="org.apache.activemq.ra.ActiveMQActivationSpec">
      			<property name="destination" value="sminderQueue"/>
      			<property name="destinationType" value="javax.jms.Queue"/>
      			<property name="maxSessions" value="100"/>
                <property name="maxMessagesPerSessions" value="100"/>
    		</bean>
  		</property>

  		<property name="ref" value="messageConsumer"/>
	</bean>

Many thanks...

-- 
View this message in context: http://www.nabble.com/ActiveMQ-%2B-Jencks-Performance-tp14249994s2354p14249994.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message