Monday, May 31, 2010

SOA Cluster Environment – Consumer BPEL Processes and ESB Services Clustering – Singleton Adapters

When a consumer service is deployed on cluster environment then consumer service on each node keeps polling for data. This causes formation of instances equal to the number of nodes on which these services are available. To avoid this, a property (“clusterGroupId”) needs to be defined. This clustering is done at process level.

For BPEL Process:

For BPEL consumer service, bpel.xml of the process needs to be modified. Add this property under activationAgents tag.

<activationAgents>

<activationAgent className="oracle.tip.adapter.fw.agent.jca.JCAActivationAgent" partnerLink="SalesOrderJMSConsumer">

<property name="clusterGroupId">ProcessNameCluster</property>

<property name="portType">Consume_Message_ptt</property>

</activationAgent>

</activationAgents>

For ESB Service:

To add this endpoint property, modify .esbsvc file as shown below.

</invocation>

<endpointProperties>

<property name="clusterGroupId" value="ProcessNameAdapter"/>

</endpointProperties>

</service>

You can also add it from ESB console as well.

Note: Make sure that all the consumer services have different clusterGroupId.