activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pavel <pag...@gmail.com>
Subject ActiveMQ reconnect issue with consumer.prefetchSize=0
Date Sat, 13 Feb 2010 13:04:50 GMT
Hi,

I'm hitting an issue with activeMQ reconnect.

We are using CXF and SOAP over JMS with ActiveMQ. Also, at some point we
started using consumer.prefetchSize=0. This is to prevent deadlocks when
doing cyclic synchronous webservice calls, like A.foo()->B.bar()->A.baz().

So, attached is a small example, echo-like webservice called over JMS every
2 seconds.
ActiveMQ 5.3 or Fuse 5.3.0.5.

activemq.broker.url=failover:(tcp://localhost:61616)
jms.destinationQueueName=SAMPLE___SERVICE___QUEUE?consumer.prefetchSize=0


All works well, until AMQ restart. Once restart happens, client seems to
reconnect (I can see consumer in a web console), but starts timing out [1].
AMQ logs contain several messages like this:
DEBUG | SAMPLE___SERVICE___QUEUE toPageIn: 1, Inflight: 0,
pagedInMessages.size 5

at some point this follows by a bunch of
DEBUG | Message expired Message
ID:EPBYMINW0436-4688-1266064267343-0:0:22:1:1 dropped=false acked=false
locked=false


After application restart things are back to normal - until the next
reconnect.

If I simply start consumers with AMQ down, then start AMQ - connect works
fine and messages start flowing. So it looks like the issue is with
reconnect only.

Am I hitting some known issue? Are there solutions/workarounds for that?


[1] Client stacktrace.
Caused by: java.lang.RuntimeException: Timeout receiving message with
correlationId e10ec6062aec42d899e3c36d1171c6530000000000000032
        at
org.apache.cxf.transport.jms.JMSConduit.sendExchange(JMSConduit.java:206)
        at
org.apache.cxf.transport.jms.JMSOutputStream.doClose(JMSOutputStream.java:56)
        at
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:185)
        at
org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
        at
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188)
        at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
        at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:472)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:302)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
        at
org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
        at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:123)


Thanks,
Pavel

Mime
View raw message