Performance leak in action-pipline?
h.wolffenbuttel Feb 3, 2010 4:41 AMHi,
I have build a reasonably simple ESB which does the following:
- deployed actionpipeline as a webservice
- marshalling XML with JAXB to java objects
- using wiretap to split message stream:
A. 1 message is to be distributed over a number of sevices
B. 1 message keeps on going along the current actionpipeline
A. distribution works fine
B. message should now be converted to a reply and send back.... should...but wont!
On my own system with enough memory and processor capacity it works fine. There is a max delay of 5 seconds before I recieve the reply. But when it is deployed at a busy applicationserver it takes up to more then 20 seconds or even 100 seconds! The funny thing is that the distribution still works fine but without a reply message the sending application keeps getting a time-out,
So the question is: where did I go wrong?
here some code:
{code:xml}
<jms-jca-provider connection-factory="XAConnectionFactory"
jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
jndi-pkg-prefix="org.jboss.naming:org.jnp.interfaces"
name="JMS-JCA-Provider" transacted="true">
<jms-bus busid="MessageAwareEsbBus">
<jms-message-filter dest-name="queue/recieve_http_message_esb"
dest-type="QUEUE" persistent="true" transacted="true"/>
</jms-bus>
<jms-bus busid="RecievedMessagesBus">
<jms-message-filter dest-name="queue/recieve_message_esb"
dest-type="QUEUE" persistent="true" transacted="true"/>
</jms-bus>
....
<activation-config>
<property name="dLQMaxResent" value="99999"/>
</activation-config>
</jms-jca-provider>
{code}
And here the service
{code:xml}
<service category="httpgateway"
description="WS Frontend speaks natively to the ESB" name="MessageService">
<listeners>
<jms-listener busidref="MessageAwareEsbBus" is-gateway="false"
maxThreads="50" name="JMS-ESBListener"/>
</listeners>
<actions faultXsd="/bg0204.xsd" inXsd="/bg0204.xsd"
mep="RequestResponse" outXsd="/bg0204.xsd" validate="true" webservice="true">
<action
class="nl.gouwit.esb.actions.TransformMessageAction"
name="TransformSoapMessageAction" process="prepareMessageForRouting"/>
<!-- WireTap -->
<action class="org.jboss.soa.esb.actions.StaticWiretap"
name="WireTapAction" process="process">
<property name="destinations">
<route-to destination-name="queue/recieve_message_esb"
service-category="MessageRouter" service-name="MessageDistributionService"/>
</property>
</action>
<action
class="nl.gouwit.esb.actions.TransformMessagAction"
name="TransformMessageAction" process="replyMessage"/>
</actions>
</service>
{code}
Regards,
Hans