Hi!

I have set up a web service that communicates with a qpid queue using AMQP
and Camel.
I use WSDL to define the service and spring to set up the connection.

I call the service in a web application that is deployed on JBoss AS 7.

My spring application context look like this

        <import resource="classpath:META-INF/cxf/cxf.xml" />
        <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
        <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
        <import resource="classpath:META-INF/cxf/cxf-extension-camel.xml" />

        <bean id="jmsConnectionFactory"
class="org.apache.qpid.client.AMQConnectionFactory">
                <constructor-arg index="0" type="java.lang.String"
value="amqp://guest:guest@clientid/test?brokerlist='tcp://qpid:5672'" />
        </bean>

        <bean id="iosbroker" 
class="org.apache.camel.component.amqp.AMQPComponent">
         <property name="connectionFactory" ref="jmsConnectionFactory" />
        </bean>

        <bean
class="org.apache.camel.component.cxf.transport.CamelTransportFactory">
                <property name="bus" ref="cxf" />
                <property name="camelContext" ref="camelContext" />
                <property name="transportIds">
                        <list>
                                
<value>http://cxf.apache.org/transports/camel</value>
                        </list>
                </property>
        </bean>

        <client id="MyService" xmlns="http://cxf.apache.org/jaxws";
xmlns:helloworld="http://service.world.hello.com";
                serviceName="helloworld:MyService"
endpointName="helloworld:MyServiceEndpoint"
                address="camel://direct:MyService"
serviceClass="com.hello.world.service.MyServicePortType">
                <features>
                        <logging xmlns="http://cxf.apache.org/core"; />
                </features>
        </client>

        <camelContext id="camelContext"
xmlns="http://camel.apache.org/schema/spring";>
                <route>
                        <from uri="direct:MyService" />
                        <to uri="iosbroker:queue:my_queue" />
                </route>
        </camelContext>

The service is working fine and I get what I am suppose to get from the
queue.

The problem is that after I call the service (with a successful result) I
can see, in the jboss log, that a dispatcher connection thread has been
created and is polling the queue every second (and my qpid queue crash after
a while).
If I add the property "receiveTimeout" to
org.apache.camel.component.amqp.AMQPComponent I can slow it down, but it
still keep polling the queue.

This is what is repeated every second in the jboss log.

00:00:18,562 DEBUG [org.apache.qpid.transport.Connection] (Camel
(camelContext) thread #5 - TemporaryQueueReplyManager[temporary]-1) SEND:
[conn:63ca493a] ch=0 id=7254 [S] MessageFlush(destination=1)
00:00:18,563 DEBUG [org.apache.qpid.transport.Connection] (Camel
(camelContext) thread #5 - TemporaryQueueReplyManager[temporary]-1) FLUSH:
[conn:63ca493a]
00:00:18,564 DEBUG [org.apache.qpid.transport.Session] (Camel (camelContext)
thread #5 - TemporaryQueueReplyManager[temporary]-1)
ssn:"2528ec27-f351-46a0-bf89-ee020dc13293" sync()
00:00:18,565 DEBUG [org.apache.qpid.transport.Session] (Camel (camelContext)
thread #5 - TemporaryQueueReplyManager[temporary]-1)
ssn:"2528ec27-f351-46a0-bf89-ee020dc13293"   waiting for[7254]: 7251,
[Lorg.apache.qpid.transport.Method;@696add0e
00:00:18,565 DEBUG [org.apache.qpid.transport.Connection] (IoReceiver -
qpid/127.0.0.1:5672) RECV: [conn:63ca493a] ch=0
SessionCompleted(commands={[1, 7254]})
00:00:18,568 DEBUG [org.apache.qpid.transport.Session] (IoReceiver -
qpid/127.0.0.1:5672) ssn:"2528ec27-f351-46a0-bf89-ee020dc13293" complete(1,
7254)
00:00:18,569 DEBUG [org.apache.qpid.transport.Session] (IoReceiver -
qpid/127.0.0.1:5672) ssn:"2528ec27-f351-46a0-bf89-ee020dc13293"   commands
remaining: 1
00:00:18,571 DEBUG [org.apache.qpid.transport.Connection] (Camel
(camelContext) thread #5 - TemporaryQueueReplyManager[temporary]-1) SEND:
[conn:63ca493a] ch=0 id=7255 MessageFlow(destination=1, unit=BYTE, value=-1)
00:00:18,572 DEBUG [org.apache.qpid.transport.Connection] (Camel
(camelContext) thread #5 - TemporaryQueueReplyManager[temporary]-1) FLUSH:
[conn:63ca493a]
00:00:18,573 DEBUG [org.apache.qpid.transport.Connection] (Camel
(camelContext) thread #5 - TemporaryQueueReplyManager[temporary]-1) SEND:
[conn:63ca493a] ch=0 id=7256 MessageFlow(destination=1, unit=MESSAGE,
value=500)
00:00:18,574 DEBUG [org.apache.qpid.transport.Connection] (Camel
(camelContext) thread #5 - TemporaryQueueReplyManager[temporary]-1) FLUSH:
[conn:63ca493a]
00:00:18,575 DEBUG [org.apache.qpid.client.AMQSession.Dispatcher] (Camel
(camelContext) thread #5 - TemporaryQueueReplyManager[temporary]-1) Set
Dispatcher Connection Started: Currently Started
00:00:18,576 DEBUG [org.apache.qpid.client.AMQSession.Dispatcher] (Camel
(camelContext) thread #5 - TemporaryQueueReplyManager[temporary]-1) Set
Dispatcher Connection Started: Currently Started

Is this a normal behavior? Shouldn't the thread die after a successful
request or is there a way to configure camel so the consumer will stop
polling the queue after successful request or timeout?
I assume that it's something wrong with my configuration, but I can't find
what it is.

Best regards,
Kristoffer



--
View this message in context: 
http://camel.465427.n5.nabble.com/Problem-with-dispatcher-connection-thread-tp5724434.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to