Hi

I have a system JMS test which involves multiple consumer threads hitting a single provider endpoint which is a JMS queue and expecting some response.

If more than 1 consumer thread is involved than I can often see a server side being unable even to get a given invocation to the endpoint application code.

For ex, with 2 threads involved, here's a failed test :

// S.B - this is happening on the consumer side I believe :

14000 [pool-1-thread-1] INFO org.springframework.jms.connection.SingleConnectionFactory - Established shared JMS Connection: ActiveMQConnection {id=ID:sberyoz-4729-1226923006536-1:1,clientId=null,started=false}

// S.B : I added these printlns :
Receieve timeout******** : 500000
Receieve timeout******** : 500000
//S.B This is a server side now
17-Nov-2008 11:56:48 org.apache.cxf.transport.jms.JMSDestination onMessage
FINE: server received request:
17-Nov-2008 11:56:48 org.apache.cxf.transport.jms.JMSDestination onMessage
FINE: The Request Message is [ [EMAIL PROTECTED]

and this is basically, the println in an application code is not even hit.

Now, same test with 2 threads succeeding :

// S.B. : client side

14594 [pool-1-thread-2] INFO org.springframework.jms.connection.SingleConnectionFactory - Established shared JMS Connection: ActiveMQConnection {id=ID:sberyoz-4775-1226923455594-1:1,clientId=null,started=false}
Receieve timeout******** : 500000
Receieve timeout******** : 500000
// S.B. The first thread has managed to get through
7-Nov-2008 12:04:17 org.apache.cxf.transport.jms.JMSDestination onMessage
INFO: The Request Message is [ [EMAIL PROTECTED]
Getting continuation for Fred
Suspending invocation for Fred
Request message has been suspended
....

// S.B the second one is lucky too
17-Nov-2008 12:04:17 org.apache.cxf.transport.jms.JMSDestination onMessage
INFO: The Request Message is [ [EMAIL PROTECTED]
Invocation for Fred has been suspended

Can someone help me to figure why I'm seeing this transient behaviour ?

here's a wsdl configuration (which I copied from the other test's wsdl) shared by all the consumer threads and by the provider endpoint :

<service name="HelloContinuationService">
<port binding="tns:HelloContinuationServiceSoapBinding" 
name="HelloContinuationPort">
<jms:clientConfig clientReceiveTimeout="500000" messageTimeToLive="500000"/>
<jms:serverConfig messageTimeToLive="500000"/>
<jms:address
jndiConnectionFactoryName="ConnectionFactory"
jndiDestinationName="dynamicQueues/test.jmstransport.text">
<jms:JMSNamingProperty name="java.naming.factory.initial" 
value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
<jms:JMSNamingProperty name="java.naming.provider.url" 
value="tcp://localhost:61500"/>
</jms:address>
<jms:server durableSubscriberName="CXF_subscriber"/>
</port>
</service>

Thanks, Sergey

Reply via email to