We come across common situation where we have duplicate JMS message consumption from BPEL where there is a cluster
For example, if we have a cluster of 3 nodes then when we deploy BPEL to consume message then there will be three BPEL instances processing same JMS message.This is because the nature of how distributed topics combined with clustered environment works
Obviously nobody wants to process same message multiple times.
To make sure only one node processes the message we need to set below property in JMS .JCA file
<property name="DurableSubscriber" value="UniqueSubscriberName"/>
This property name is used to identify a durable subscription. When working with durable subscriptions ensure that ClientID is also specified in addition to
DurableSubscriber
property. ClientID
is specified as part of the factoryProperties
property when defining a JMS adapter managed connection factory instanceWeblogic jms expects the combination of durable subscription + clientID to be unique across the durable subscriptions, just client ID or durable subscriber property alone does not suffice.
To set ClientID on deployment JNDI, follow below steps
1.Log in in to the WLS console.
2.Navigate to
3.On the configuration tab expand oracle.tip.adapter.jms.IJmsConnectionFactory and select your connection factory (e.g. "eis/wls/Topic")
4.In the "FactoryProperties" add the Id (e.g. "ClientID=SOAClientSubscription1;")
5.Click on save and follow the onscreen instructions and remember to update the JmsAdapter, in order for the changes to take effect