activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pesochinskiy, Vadim \(MSCIBARRA\)" <Vadim.Pesochins...@mscibarra.com>
Subject Testing ActiveMQ 4.0
Date Mon, 22 May 2006 18:07:12 GMT
Hi all!
 
I am currently testing 4.0 version of ActiveMQ and came across following
issues:
 
1)  Using master/slave configuration as described in the web site, if
slave comes up before master is running, it hangs and never recovers. I
would expect it to either wait until Master is up and connect to it or
simply shutdown.
 
2)  I have 4 consumers and 2 producers all connected to the same queue.
I am using the code from the examples directory. Only configuration
files are changed (see below).
 
a)  all consumers stopped while producers are running and filling up the
queue. 
b)  stop both producers and bring up consumer 1, which starts picking
messages from the queue. 
c) bring up the consumers 2, 3 and 4. None of them are getting any
messages, meanwhile consumer 1 keeps processing
d) kill consumer 1, consumers 2,3,4 all at immediately start picking up
messages from the queue.
e) bring up consumer 1 and it starts processing as well
 
A variation of the same issue is the following. Let's say there 2
producers sending 1 message per second each, while single consumer
(consumer 1) picks 1 message per second. After awhile we will have a
backlog of messages in the queue. Now lets start a few more consumers
(consumer 2 & 3). What happens is the new consumers will keep picking up
all the new messages, while only consumer 1 processes the backlog. This
is not good, because new messages are coming 1 per second while c2&3 can
process 2 per second, i.e. help to clear the backlog faster. Now if you
kill consumer 1, consumers 2 & 3 start picking all the messages
including the backlog. 

3) I ran a load test with master, slave, and messages being sent at rate
of 2000 per second. I noticed that slave was taking most of CPU time b/w
50% - 60%.

4)  Sometimes slave keeps printing following INFO messages on the
screen, until I kill the master. I think it is not a good idea, because
stack trace is quite expensive to build and if frequency of messages is
high it can take too much CPU time. It probably should be a debug
message, or should be printed once in 5 minutes with a msg count.
 
INFO  Service                        - Async error occurred:
java.lang.IllegalStateException: Cannot
 lookup a consumer from a connection that had not been registered:
ID:PESOCHIV-XP-1635-1148072519736
-0:0
java.lang.IllegalStateException: Cannot lookup a consumer from a
connection that had not been regist
ered: ID:PESOCHIV-XP-1635-1148072519736-0:0
        at
org.apache.activemq.broker.AbstractConnection.lookupConnectionState(Abst
ractConnection.ja
va:223)
        at
org.apache.activemq.broker.AbstractConnection.processMessageAck(Abstract
Connection.java:3
56)
        at
org.apache.activemq.command.MessageAck.visit(MessageAck.java:178)
        at
org.apache.activemq.broker.AbstractConnection.service(AbstractConnection
.java:201)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConn
ection.java:62)
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorre
lator.java:97)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.
java:63)
        at
org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:76)
        at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:
44)
        at
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelat
or.java:60)
        at
org.apache.activemq.broker.ft.MasterConnector.serviceRemoteCommand(Maste
rConnector.java:2
04)
        at
org.apache.activemq.broker.ft.MasterConnector$2.onCommand(MasterConnecto
r.java:99)
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorre
lator.java:97)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.
java:63)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatN
egotiator.java:11
4)
        at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMoni
tor.java:122)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSuppor
t.java:87)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:143
)
        at java.lang.Thread.run(Unknown Source)
 

CONFIGURATION FILES:


<beans xmlns="http://activemq.org/config/1.0">
	<broker brokerName="brokerMemoryConfigTest" 
				persistent="false"
useShutdownHook="true" deleteAllMessagesOnStartup="true" useJmx="false">
		<transportConnectors>
			<transportConnector
uri="tcp://localhost:61616"/>
		</transportConnectors>
		<persistenceAdapter>
			<memoryPersistenceAdapter
init-method="createTransactionStore"/>
		</persistenceAdapter>
		<networkConnectors>
		  <networkConnector name="default"
uri="multicast://default" failover="true" />
		  <!--
		  <networkConnector name="host1 and host2"
uri="static://(tcp://host1:61616,tcp://host2:61616)" failover="true"/>
		  -->
		</networkConnectors>
	</broker>
</beans>


<beans xmlns="http://activemq.org/config/1.0">
	<broker brokerName="brokerMemoryConfigTest" 
				persistent="false"
useShutdownHook="true" deleteAllMessagesOnStartup="true" useJmx="false"
	
masterConnectorURI="tcp://localhost:61616"
shutdownOnMasterFailure="false">
		<transportConnectors>
			<transportConnector
uri="tcp://localhost:61617"/>
		</transportConnectors>
		<persistenceAdapter>
			<memoryPersistenceAdapter
init-method="createTransactionStore"/>
		</persistenceAdapter>
		<networkConnectors>
		  <networkConnector name="default"
uri="multicast://default" failover="true" />
		  <!--
		  <networkConnector name="host1 and host2"
uri="static://(tcp://host1:61616,tcp://host2:61616)" failover="true"/>
		  -->
		</networkConnectors>
	</broker>
</beans>



- Vadim
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender.  Sender does not waive confidentiality
or privilege, and use is prohibited.

Mime
View raw message