Announcement Announcement Module
No announcement yet.
Load balancing with Uniform distributed queues using outbound JMS adapter Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • Load balancing with Uniform distributed queues using outbound JMS adapter

    We are using Spring integration with Weblogic server (cluster with 2 servers). We have 2 JMS servers (with in weblogic server) and queues are created as unformly distributed queues and deployed to both servers.

    We are trying get messages from upstream and trying to put messages on to the JMS queue using outbound adapter. In weblogic cluster, it actually maintains 2 queues (one on each JMS server - one local and another remote) but pulishes with only one name is the cluster.

    In fact our desired case is to load balance puts so that messages are sent to each queue (which are part of uniform distributed queue). This behavior can be achieved using a channel where connection factory/destination is looked up each time (when cache set to NONE) a consumer is created. When ever a consumer looks up for destination using the connection factory, weblogic (with server affinity set to false) will loadbalance the requests and return local/remote queue. This is well designed in spring integration.

    However, in case of outbound adapter, it looks up destination only once and caches this. Since weblogic returns the local destination initially; all the outbound messages end up only in the local queue.

    Due to this JMS server affinity and spring intergration caching, it is becoming impossible to do proper load balancing.

    By the way, I tried JNDI look up property cache=false for connection factory and the queue. It was failing with the initial lookup itself - getting foreign destination error.


  • #2
    For the desired behavior you describe, the JNDI lookup is the right way to go.

    Can you post the relevant configuration excerpt and the error message you were getting when trying to use that?



    • #3
      I'm very interrested for this answer of this since I'm facing the exact same situation. Currently I have to define the physical name of the queue (server+queue) which cannot deals with cluster ....