2
votes

So here is the question . I have an application running in weblogic 8 which is heavily dependent on JMS messages . The messages flow from a clustered MQ Server and the application which is in ejb 2 used to listen to directly in the MQ using configurations in the weblogic-ejb-jar.xml. The MQ server has two Queue Managers and two different Connection Factory name for those managers .

    <weblogic-enterprise-bean>
    <ejb-name>MDB_QM1</ejb-name>
    <message-driven-descriptor>
        <destination-jndi-name>QM1</destination-jndi-name>
        <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
        <connection-factory-jndi-name>CF1</connection-factory-jndi-name>
    </message-driven-descriptor>
    </weblogic-enterprise-bean>
    <weblogic-enterprise-bean>

    <ejb-name>MDB_QM2</ejb-name>
    <message-driven-descriptor>
        <destination-jndi-name>QM2</destination-jndi-name>
        <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
        <connection-factory-jndi-name>CF2</connection-factory-jndi-name>
    </message-driven-descriptor>        
    </weblogic-enterprise-bean>

Now the application is to be migrated to weblogic 10.3 and the configurations has already been done in test for that .ejb version has changed to 3 and they have used annotations in the mdbs for queue config and such .But the real problem is this ,the application used to listen to the MQ directly and now they have configured a bridge which will transfer the message from MQ to a internal queue and the mdb will listen to that queue . The source MQ queue config in weblogic bridge config has only one connection factory in there and I am not sure if its possible to configure multiple queue managers , connection factories etc in a single queue . But in production there will be multiple queue managers etc .

I think its possible if I configure foreign servers for those queues then the clustering will be possible . But that will mean a huge change in the application and weblogic config also . So the ideal solution I am searching for is a way to connect to those multiple MQ queue managers with the existing bridge configuration. If its not possible , please suggest the next best thing . I am open to all ideas :)

Thanks

1
What is the bridge here and what is an internal queue? In the current setup does both queues receive similar messages from source systems?Umapathy
Thanks for replying, By internal queue i meant a local jms queue in weblogic . A bridge exists between the local queue and the remote queue (MQ) . In the current setup they MQ manager and MQconnection factories are different , but queue names are same , so they send similar messages . From what I understand , the multiple managers provide high availability. So if one queuemanager is down , other can process the messages .Mr A
If I understand correctly, the bridge will take care of getting the messages off the MQ queues (multiple installations or clustered) and puts it in the Weblogic JMS queue. You just have to modify your MDB to get the messages from this JMS queue. Whatever the MDB was doing is now done by the bridge. So I dont know whats the concern here. Can you make it clear?Umapathy
MDB is listening to the correct queue. My only concern is will the bridge be able to connect to multiple queuemanagers(MQ side) simultaneously to provide failover ?Mr A
ok. you havent given details on the bridge. So its hard to comment here. A standalone mq application (may be the bridge is of this type) can connect to more than one queue or configured (using bindings or mq CCDT or just configuration files) to connect to one qmgr and fail over to another during DR. If you are concerned about the bridge then I suggest talk to the bridge development guys on how it works and ask further questions here. Hope it helpsUmapathy

1 Answers

1
votes

A WebSphere MQ cluster is all about how QMgrs talk to each other and does not hide from the application the fact that there are multiple physical instances of a queue. A separate connection is required to each queue manager instance. The app will need to either...

  • Use an instance of the bridge for each queue instance.
  • Configure the bridge to make multiple simultaneous connections to the different QMgrs.

Whoever made the decision to configure a bridge with a single connection factory did not consider the architecture of the underlying transport. You cannot overcome that poor decision with configuration, no matter how hard you try.