Say you have a simple BPEL process that gets messages from JMS queue through a JMSAdapter, transforms the message, and then calls a down stream service via SOAP.
For such a simple BPEL process, are there any optimization that can be done for performance?
The answer is yes. And the low hanging fruits can be picked from layer between the inbound JMSAdapter and BPEL process.
The ProblemJust open up the WSDL file of the inbound adapter. You will notice something like the following:
<portType name="Consume_Message_ptt">
<operation name="Consume_Message">
<input message="tns:ExpenseRecord_msg"/>
</operation>
</portType>
Notice there is only an INPUT tag but no OUTPUT
interaction patterns between the caller and the BPEL process that Oracle BPEL supports.
of have separate threads to send and process the message
<BPELSuitcase>
<BPELProcess id="ProcessFulfillmentOrderBillingBRMCommsAddSubProcess" src="ProcessFulfillmentOrderBillingBRMCommsAddSubProcess.bpel">
...
<configurations>
...
<property name="deliveryPersistPolicy" encryption="plaintext">off.immediate</property>
</configurations>
</BPELProcess>
</BPELSuitcase>
Hi Francis,
ReplyDeleteVery interesting and nice blog, can we adopt the same thing for DB adapter(for polling processes)?
Yes you can. I will soon have another post for configuring threads for other adapters.
DeleteThis comment has been removed by the author.
ReplyDeleteHi Francis,
ReplyDeleteI have a JMS queue and a BPEL listenting on that queue , initially when messages arrives into the queus the bpel gets invoked , but after some time whne the message continue to flow in the BPEL instances are invoked but they are in running state. The instances never get completed .
I tried increasing the thread count , used teh bpel.config.trasaction properties but all went in vein . Please help me in fixing this .
Cheers
Lakshmi