Friday, January 7, 2011

Topic test. ActiveMQ client 1.4.1. NMS 1.4.0

In this article I'm going to test behavior of ActiveMQ .net C# client in version 1.4.1 and NMS 1.4.0.
To see how I'm doing it look at: Preparation for use Topic  and My Topic usage



Let's see my four test scenarios:
  1. Client connect to one broker then start to generate messages (10 per second) and recive.
  2. Client connect to one broker then start to generate messages (10 per second) and recive but between sending messages he disconnect from broker and connect again.
  3. Client connect to the brokers with failover option:
    failover://(tcp://192.168.44.133:61616,tcp://192.168.4.61:61616,tcp://192.168.4.62:61616,tcp://192.168.4.40:61616)
    then start to generate messages (10 per second) and recive.
  4. Client connect to the brokers with failover option:
    failover://(tcp://192.168.44.133:61616,tcp://192.168.4.61:61616,tcp://192.168.4.62:61616,tcp://192.168.4.40:61616)
    then start to generate messages (10 per second) and recive but between sending messages it disconnects from broker and connects again.


For testing were used 4 brokers in version 5.4.2 in failover mode with configuration:

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
 
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>file:${activemq.base}/conf/credentials.properties</value>
        </property>    
    </bean>  
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.base}/data" destroyApplicationContextOnStop="true">
  
    <networkConnectors>
        <networkConnector name="test-net" uri="static:(tcp://192.168.44.133:61616,tcp://192.168.4.61:61616,tcp://192.168.4.62)"/>
    </networkConnectors>

        <persistenceAdapter>
            <kahaDB directory="${activemq.base}/data/kahadb"/>
        </persistenceAdapter>
     
     <transportConnectors>
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
        </transportConnectors>
  
    </broker>
    <import resource="jetty.xml"/>
  
</beans>

You can do the test on your own using my demonstrator application. The demonstrator application is available for download from: Demonstrator application topic test or Demonstrator application topic test.



Few words about usage:
  1. Fill the fields in step 1 and push the button Connect
  2. Choose generator type, set time for test (in hours) and timer interval for sending messages (in milisecond)



Test results:

Tests 1 and 3 have been successfully completed. All messages are sent and received. In test 2 some messages disappeared but it's understandable when a client connects and disconnects from broker.
 

The worst falls last test. Actually it's not coming to an end. When a client running in failover connection and disconnection causes a rapid increase memory usage and the application stops responding!!!

This bug is described on ActiveMQ jira with key AMQNET-298 .

Don't worry!!! Guys from ActiveMQ team already have fixed this bug in NMS version nms-1.5.0 .

The next test will check if the bug has been fixed!

No comments:

Post a Comment