2 Replies Latest reply: Apr 20, 2011 10:51 PM by 687626 RSS

    Question: BPEL JMS Subscriber in a load balanced environment:

      We have recently deployed a BPEL Project that subscribes to TIBCO JMS messages on a topic on a load balanced BPEL environment.
      The subscriber is a Durable subscriber. When the project is deployed we encountered an issue, One of the Oracle Application server successfully connects and creates a connection but another one fails to create a connection.

      How to resolve this kind of an issue?
      Is there any way to selectively undeploy the project on one Node? Any help is greatly appreciated.

      Successful connection on one Node:

      Is there any way to selectively un deploy the project on one Node? Any help is greatly appreciated.
      <2009-04-15 22:04:59,140> <INFO> <default.collaxa.cube.activation> <JMSAdapter::Inbound> JMSMessageConsumer_init: Successfully created MessageConsumer for destination XYZ.ABC. (payload = 1, subscriber = ABCDEF)

      Failed connection on another node:
      Error while creating Topic consumer:.
      Please examine the log file to determine the problem.

      at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:466)
      at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:386)
      at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.createConsumer(JMSMessageConsumer.java:282)
      at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.init(JMSMessageConsumer.java:223)
      at oracle.tip.adapter.jms.inbound.JmsConsumer.init(JmsConsumer.java:159)
      at oracle.tip.adapter.jms.JmsEndpoint.run(JmsEndpoint.java:151)
      at oracle.tip.adapter.fw.jca.work.WorkerJob.go(WorkerJob.java:51)
      at oracle.tip.adapter.fw.common.ThreadPool.run(ThreadPool.java:272)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: javax.jms.JMSException: Duplicate durable subcription detected
      at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:556)
      at com.tibco.tibjms.TibjmsxSessionImp._createConsumer(TibjmsxSessionImp.java:436)
      at com.tibco.tibjms.TibjmsxSessionImp._createConsumer(TibjmsxSessionImp.java:359)
      at com.tibco.tibjms.TibjmsxSessionImp.createDurableSubscriber(TibjmsxSessionImp.java:4177)
      at com.tibco.tibjms.TibjmsTopicSession.createDurableSubscriber(TibjmsTopicSession.java:95)
      at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:441)
      ... 8 more
        • 1. Re: Question: BPEL JMS Subscriber in a load balanced environment:
          We have the same issue in 11G BPEL. Does any one has a solution for this?

          Thank you
          • 2. Re: Question: BPEL JMS Subscriber in a load balanced environment:
            The issue as indicated by the error appears due to duplete durable subscription. You might need to review this design or leave it as such.
            Even if Tibco allowed duplicate durable subscription (which violates jms spec), then each of your soa managed server will get a copy of the message resulting in duplicate messages which might do more harm for you. Current setup allows only one subscriber (a race condition whichever managed server connecting first) means you will get only one copy of the message , though all the load ends up in one managed server.

            You can slightly modify the design, where you can have a soa router composite( or can use weblogic messaging bridge) with an in and out jms adapter which gets the message off the tibco topic and forwards to a weblogic distributed queue with load balancing turned on. You can then have your heavy composite consuming messages off the distributed queue. Even though soa router composite load will be only on one managed server at any time it might be very little as it doesnt do anything much other than routing. The load on the original heavy composite will be load balanced.