Weblogic分布式队列 - 负载平衡不起作用

时间:2012-02-14 09:52:15

标签: queue jms weblogic distributed cluster-computing

我已经设置了一个weblogic 9.2M3群集服务器,在不同的VM上有两个节点。 在群集上,我已在群集中设置了统一分布式队列。 遗憾的是,分布式队列上的负载平衡不起作用,并且所有消息都由与生产者相同的节点上的客户端处理。

我已经检查了以下内容:

  1. 在工厂中关闭服务器关联
  2. 检查群集中节点之间的多播是否正常工作
  3. 通过以下方式检查设置工厂和队列目标的不同方法:
    • 将Factory和Queue设置为部署到群集和
    • 将Factory设置为Cluster and Queue为两个JMSServers
    • 将Factory和Queue设置为以JMSServers为目标
  4. 为什么负载平衡可能不适用于以下配置的任何建议?

    这是我使用config.xml部分的配置:

     <cluster>
        <name>TestCluster</name>
        <multicast-address>239.192.0.1</multicast-address>
        <multicast-port>17001</multicast-port>
        <number-of-servers-in-cluster-address>2</number-of-servers-in-cluster-address>
      </cluster>
      <jms-server>
        <name>JMSServer1</name>
        <target>server1</target>
        <persistent-store xsi:nil="true"></persistent-store>
        <temporary-template-resource xsi:nil="true"></temporary-template-resource>
        <temporary-template-name xsi:nil="true"></temporary-template-name>
      </jms-server>
      <jms-server>
        <nameJ>JMSServer2</name>
        <target>server2</target>
        <persistent-store xsi:nil="true"></persistent-store>
        <temporary-template-resource xsi:nil="true"></temporary-template-resource>
        <temporary-template-name xsi:nil="true"></temporary-template-name>
      </jms-server>
      <jdbc-store>
        <name>PersistentStore1</name>
        <prefix-name>sas1_</prefix-name>
        <data-source>QueueDataSource</data-source>
        <target>sas1</target>
      </jdbc-store>
      <jdbc-store>
        <name>PersistentStore2</name>
        <prefix-name>sas2_</prefix-name>
        <data-source>QueueDataSource</data-source>
        <target>sas2</target>
      </jdbc-store>
      <jms-system-resource>
        <name>ClusterJMSModule</name>
        <target>TestCluster</target>
        <sub-deployment>
          <name>ClusterSubDeployment</name>
          <target>TestCluster</target>
        </sub-deployment>
        <descriptor-file-name>jms/clusterjmsmodule-jms.xml</descriptor-file-name>
      </jms-system-resource>
    

    目的地的定义:

    <connection-factory name="jms/levelsInputConnectionFactory">
        <sub-deployment-name>ClusterSubDeployment</sub-deployment-name>
        <jndi-name>jms/levelsInputConnectionFactory</jndi-name>
        <load-balancing-params>
          <server-affinity-enabled>false</server-affinity-enabled>
        </load-balancing-params>
      </connection-factory>
      <uniform-distributed-queue name="jms/levelsInputQueue">
        <sub-deployment-name>ClusterSubDeployment</sub-deployment-name>
        <jndi-name>jms/levelsInputQueue</jndi-name>
        <forward-delay>10</forward-delay>
      </uniform-distributed-queue>
    

1 个答案:

答案 0 :(得分:0)

我按照文章http://middlewaremagic.com/weblogic/?p=3747中给出的步骤操作,它帮助我为下面给出的场景设置了分布式队列......

(1-Admin Server(AS),2-Managed Server(MS),2-Boxes)

箱-A

群集下的MS-1 JMSServer-1和Store-1 =&gt; MS-1(可移民)

箱-B

群集下的MS-2 JMSServer-2和Store-2 =&gt; MS-2(可移民)

管理服务器

  • JMS_Module =&gt;群集
  • SubDeployment_UDQ =&gt; JMS Server-1,JMS Server-2
  • ConnectionFactory(“禁用亲和关系”)=&gt;群集
  • UDQ(分布式队列)=&gt; SubDeployment_UDQ