You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Viali <Vi...@163.COM> on 2006/09/12 13:47:34 UTC

How to enlarge ActiveMQ'S capacity of concurrent?

I confiugre and xml file for ActiveMQ, and create a broker using Xbean as
followed:
xbean.xml:

<beans>
  <bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
  <broker useJmx="true" xmlns="http://activemq.org/config/1.0" >
    <persistenceAdapter>     	
           <journaledJDBC journalLogFiles="5"  dataDirectory="./Data" />              
    </persistenceAdapter>
    <transportConnectors>
        <transportConnector uri="tcp://localhost:61616" />
    </transportConnectors>    
  </broker>
</beans>

Java Code for creating a broker:

URI uri=new URI("xbean:xbean.xml");
BrokerService broker = BrokerFactory.createBroker(uri);
broker.start();

Then, Write a message provider:

public static class HelloWorldProducer implements Runnable {
        public void run() {
            try {
                // Create a ConnectionFactory
                ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory("tcp://localhost:61616");
                // Create a Connection
                Connection connection =
connectionFactory.createConnection();
                connection.start();
                // Create a Session
                Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
                // Create the destination (Topic or Queue)
                Destination destination = session.createQueue("TEST.FOO");
                // Create a MessageProducer from the Session to the Topic or
Queue
                MessageProducer producer =
session.createProducer(destination);
                producer.setDeliveryMode(DeliveryMode.PERSISTENT);
                // Create a messages
                String text = "Hello world! From: " +
Thread.currentThread().getName() + " : " + this.hashCode();
                TextMessage message = session.createTextMessage(text);
                // Tell the producer to send the message
                System.out.println("Sent message: "+ message.hashCode() + "
: " + Thread.currentThread().getName());
                producer.send(message);
                // Clean up
                session.close();
                connection.close();
            }
            catch (Exception e) 
	    {
                e.printStackTrace();
            }
        }
    }

However, when I run the codes followed:

      for(int i=0;i<500;i++)//create 500 connections at the same time..
        {
        	thread(new HelloWorldProducer(), false);
        	//   Thread.sleep(300); // everything works fine if sleep.
        }

Then some thread runs fine, but others not.  I can see Exceptions happens:

javax.jms.JMSException: Could not connect to broker URL:
tcp://localhost:61616. Reason: java.net.ConnectException: Connection
refused: connect
	at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:32)
	at
org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:252)
	at
org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:165)
	at org.sigsit.ict.AppTest$HelloWorldProducer.run(AppTest.java:51)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection refused: connect
..........balaballa..


-- 
View this message in context: http://www.nabble.com/How-to-enlarge-ActiveMQ%27S-capacity-of-concurrent--tf2258370.html#a6264416
Sent from the ActiveMQ - User forum at Nabble.com.


Re: How to enlarge ActiveMQ'S capacity of concurrent?

Posted by James Strachan <ja...@gmail.com>.
I replied to the other thread...
http://www.nabble.com/Re%3A-How-to-enlarge-ActiveMQ%27S-capacity-of-concurrent--p6358828.html

On 9/12/06, Viali <Vi...@163.com> wrote:
>
> I confiugre and xml file for ActiveMQ, and create a broker using Xbean as
> followed:
> xbean.xml:
>
> <beans>
>   <bean
> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
>   <broker useJmx="true" xmlns="http://activemq.org/config/1.0" >
>     <persistenceAdapter>
>            <journaledJDBC journalLogFiles="5"  dataDirectory="./Data" />
>     </persistenceAdapter>
>     <transportConnectors>
>         <transportConnector uri="tcp://localhost:61616" />
>     </transportConnectors>
>   </broker>
> </beans>
>
> Java Code for creating a broker:
>
> URI uri=new URI("xbean:xbean.xml");
> BrokerService broker = BrokerFactory.createBroker(uri);
> broker.start();
>
> Then, Write a message provider:
>
> public static class HelloWorldProducer implements Runnable {
>         public void run() {
>             try {
>                 // Create a ConnectionFactory
>                 ActiveMQConnectionFactory connectionFactory = new
> ActiveMQConnectionFactory("tcp://localhost:61616");
>                 // Create a Connection
>                 Connection connection =
> connectionFactory.createConnection();
>                 connection.start();
>                 // Create a Session
>                 Session session = connection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>                 // Create the destination (Topic or Queue)
>                 Destination destination = session.createQueue("TEST.FOO");
>                 // Create a MessageProducer from the Session to the Topic or
> Queue
>                 MessageProducer producer =
> session.createProducer(destination);
>                 producer.setDeliveryMode(DeliveryMode.PERSISTENT);
>                 // Create a messages
>                 String text = "Hello world! From: " +
> Thread.currentThread().getName() + " : " + this.hashCode();
>                 TextMessage message = session.createTextMessage(text);
>                 // Tell the producer to send the message
>                 System.out.println("Sent message: "+ message.hashCode() + "
> : " + Thread.currentThread().getName());
>                 producer.send(message);
>                 // Clean up
>                 session.close();
>                 connection.close();
>             }
>             catch (Exception e)
>             {
>                 e.printStackTrace();
>             }
>         }
>     }
>
> However, when I run the codes followed:
>
>       for(int i=0;i<500;i++)//create 500 connections at the same time..
>         {
>                 thread(new HelloWorldProducer(), false);
>                 //   Thread.sleep(300); // everything works fine if sleep.
>         }
>
> Then some thread runs fine, but others not.  I can see Exceptions happens:
>
> javax.jms.JMSException: Could not connect to broker URL:
> tcp://localhost:61616. Reason: java.net.ConnectException: Connection
> refused: connect
>         at
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:32)
>         at
> org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:252)
>         at
> org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:165)
>         at org.sigsit.ict.AppTest$HelloWorldProducer.run(AppTest.java:51)
>         at java.lang.Thread.run(Unknown Source)
> Caused by: java.net.ConnectException: Connection refused: connect
> ..........balaballa..
>
>
> --
> View this message in context: http://www.nabble.com/How-to-enlarge-ActiveMQ%27S-capacity-of-concurrent--tf2258370.html#a6264416
> Sent from the ActiveMQ - User forum at Nabble.com.
>
>


-- 

James
-------
http://radio.weblogs.com/0112098/