Best Practices from Oracle Development's A‑Team

Configure Adapter Threads in Oracle SOA 10G


In a separate posting, I mentioned you can configure multiple threads of inbound (polling) adapters of Oracle SOA. However, the ways to configure multiple threads vary between adapters and product versions, and the information scatter across multiple documentations. Hence it is worth to consolidate them here.

Main Article

This post is for Oracle SOA 10.1.3.x. I have another blog post for configuring adapter threads in Oracle SOA 11G.

1. JMS Adapter

  • For BPEL: Set 'adapter.jms.receive.threads' as activation agent properties in bpel.xml
<activationAgents>  <activationAgent className=“…" partnerLink="MsgQueuePL">  ... <property name="adapter.jms.receive.threads”>5</property>  </activationAgent>  </activationAgents>
  • For OESB onward: Set as endpoint property via JDeveloper ( or directly at *.esbsvc file



2. AQ Adapter

This blog summarizes the different kind of settings for AQ Adapter threads very well. Let me copy and paste it below:

#### FOR ESB/BPEL  <property name="adapter.aq.dequeue.threads">NO_OF_THREADS</property>  #### FOR BPEL  <property name=activationInstances">NO_OF_THREADS<property>  #### FOR ESB  <endpointProperties>  <property name="numberOfAqMessageListeners" value="NO_OF_THREADS"/>  </endpointProperties>

3. MQ Adapter

Oracle Support Tech Note How to limit number of threads for reading messages from a queue (Doc ID 1144847.1] describes the details of how to setup the threads for Inbound MQAdapter . Copying it here:

There exists a parameter called "InboundThreadCount" which is valid for both 11g and also it is tested on SOA, and confirmed to be working on

To set the parameter, Please add the following to the Inbound MQ Adapter

<jca:operation ActivationSpec="oracle.tip.adapter.mq.inbound.SyncReqResActivationSpecImpl"  MessageType="REQUEST"  QueueName="INBOUND_QUEUE"  Priority="AS_Q_DEF"  Persistence="AS_Q_DEF"  InboundThreadCount="1" <==== This parameter Expiry="NEVER"  OpaqueSchema="true" >  </jca:operation>

4. Database Adapter

It takes multiple steps to configure database adapter threads.

Step 1: Configure distributed polling. The query in the polling database adapter needs to be a distributed polling in order to avoid data duplication.

To set usesSkipLocking in SOA 10.1.3.x, you must first declare the property in ra.xml, then set the value in oc4j-ra.xml. No re-packaging or redeployment of DbAdapter.rar is needed.

Step 2. Set activationInstances as activation properties at bpel.xml to achieve multiple threads in database adapter.

Note: There is another property called NumberOfThreads. This property is NOT supported in clustered environment or when activationInstances>1 in SOA 10.1.3.x, or even inversions prior to SOA

Step 3. Tune MaxTransactionSize and MaxRaiseSize to throttle the incoming messages along side with activationAgents/NumberOfThreads. These two properties are configured either through the DbAdapter wizard at JDeveloper, or manually directly at the WSDL file of the DbAdapter

5. File/FTP Adapter

File/FTP adapter's has a separate poller thread and processor thread (comparatively, JMS/AQ adapters always use the same thread to poll and process). There is always only one poller thread, while there could be multiple processor threads. In SOA 10.1.3.x, the processor threads are globally shared among File and FTP adapter instances, while in 11G you have an option to configure private processor thread pool per adapater *.jca file.



In SOA 10.1.3.x, the configuration file for you to set the File/FTP adapter processor threads are:
[SOA_HOME]\integration\esb\config\pc.properties (need to rename from pc.properties.esb)

The property name is:

If BPEL and ESB are co-located on the same OC4J container, the pc.properties for BPEL takes precedence over that of ESB . In such cases, the values set in SOA_HOME\bpel\system\service\config\pc.properties will suffice.

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.Captcha

Recent Content