This discussion is archived
3 Replies Latest reply: Feb 20, 2013 2:45 PM by 653697 RSS

Uniform Distributed Topic not sending messages to all cluster instances

992081 Newbie
Currently Being Moderated
Hello there, I hope you can help me with this.

First, the details of the configuration I have:

- I'm using WebLogic Server 12c (12.1.1.0)

- I have 1 Cluster with 2 managed servers (ManagedServer1 holds adminServer and clusterInstance1, ManagedServer2 holds clusterInstance2)

- 2 JMS Servers, each targeted to corresponding managed server in my cluster (JMSServer1 to ManagedServer1 and JMSServer2 to ManagedServer2)

- One JMS Module targeted to the cluster

- One Connection Factory targeted to the cluster with: Load Balancing = Disabled ; Server Affinity = Disabled (I played around with this values and didn't work either)

- One Distributed Topic with: Forward policy = Replicated ;

- One Web application deployed in the cluster that produces JMS messages

- One MDB application deployed in the cluster that reads JMS messages


The goal is that when sending a message to my Topic destination through, for example, ManagedServer1, each cluster instance should send a copy to MDB residing in them. However, if I send a message through ManagedServer1 I only get the message in the MDB instance that resides in ManagedServer1.

What we need is that when sending a JMS message through either ManagedServer1 or ManagedServer2, the message should be received in both ManagedServers.

For reference, I want to acheive exactly what is shown in this video for the Uniform Distributed Topic: https://www.youtube.com/watch?v=HAKixK_wp0Q

I followed the steps in the video but didn't work. The only significant difference I found, is that the guy in the video showed the JNDI Tree of one of his ManagedServers and the tree displayed two JMS Server branches (one for each JMS server configured). In my JNDI Trees, I can only see the corresponding JMS Server. I don't know if the solution to my problem might be around this.

Your help will be highly appreciated since I have been struggling with this for a long time.

Thanks in advance,
Mario.
  • 1. Re: Uniform Distributed Topic not sending messages to all cluster instances
    653697 Journeyer
    Currently Being Moderated
    I suspect that your two WebLogic servers are not on the same cluster or there are some problems in your configuration.

    In addition, for your requirement, I suggest that you use the One-Copy-Per-Server topicMessagesDistributionMode as well as LocalOnly distributedDestinationConnection.

    You can always turn on debugging in order to figure out what is going on.
    The following are the main JMS and MDB debugging flags.
    -Dweblogic.debug.DebugJMSBackEnd=true
    -Dweblogic.debug.DebugJMSDistTopic=true
    -Dweblogic.debug.DebugEjbMdbConnection=true
  • 2. Re: Uniform Distributed Topic not sending messages to all cluster instances
    992081 Newbie
    Currently Being Moderated
    Hi Dongbo,

    Thanks a lot for your quick response. Related to the servers I have confirmed that both are in the same cluster. Physically I have ManagedServer1 and 2 in different machines, but they are configured in WebLogic as a single cluster. Deployed applications are correctly distributed among the cluster.

    Regarding topicMessagesDistributionMode property, I forgot to tell you that I had those values as per WebLogic documentation pointed out. I'll share my property settings to show the whole picture of this at the bottom of this post.

    On the other hand, do you have any thoughts on the JNDI Tree info I sent? I would like to know if it's usual (and how to do that) to see more than one JMS Server reference when looking at the JNDI Tree of a particular Cluster instance. (Please start watching the video at minute 9:35 and you'll see what I mean ---- https://www.youtube.com/watch?v=HAKixK_wp0Q ). Acheiving that might help us.

    I'll follow your advice to turn on debugging features and see what I can find. Any thoughts or ideas to solve this will be highly appreciated.

    Best regards,
    Mario.




    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    @MessageDriven(
              messageListenerInterface = MessageListener.class,
         name = "TopicListenerMDB",
         mappedName = "jms/MyTestingTopic",
         activationConfig = {
         @ActivationConfigProperty( propertyName = "connectionFactoryJndiName", propertyValue = "jms/DSTopicTestConnectionFactory"),
         @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
         @ActivationConfigProperty( propertyName = "distributedDestinationConnection", propertyValue ="LocalOnly"),
         @ActivationConfigProperty( propertyName = "topicMessagesDistributionMode", propertyValue ="One-Copy-Per-Server")
         }
         )
    public class TopicListenerMDB implements MessageListener {

         private static Logger logger = Logger.getLogger(TopicListenerMDB.class);
         
    public TopicListenerMDB() {
    }
         

    public void onMessage(Message message) {
              System.out.println("MDB gets: " + message);
              logger.info("MDB gets: " + message);
    }

    }
  • 3. Re: Uniform Distributed Topic not sending messages to all cluster instances
    653697 Journeyer
    Currently Being Moderated
    Hi Mario,

    If your cluster configuration and JMS server targeting are correct, you should see both jms servers in the jndi tree from both server instances. You only see one jms server in the jndi tree, which indicates that something is not right in your cluster configuration. I would suggest that you have 3 instances: one admin server and 2 managed servers, and put the 2 managed servers in a cluster.

    Regards,
    Dongbo

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points