配置MDB(在Glassfish上)以侦听共享主题订阅

时间:2017-01-05 13:04:26

标签: glassfish ejb java-ee-7 message-driven-bean

我正在寻找的是确切的激活配置属性名称,以便配置消息驱动Bean以接受来自共享订阅模式的JMS主题的消息

@MessageDriven(activationConfig = {
    @ActivationConfigProperty(propertyName = "destinationLookup",propertyValue = "java:app/jms/testT1"),
    @ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Topic"),
    //the below property is not working in GlassFish (4.1) - just to convey the idea
    @ActivationConfigProperty(propertyName = "sharedSubscription",propertyValue = "TRUE") 
})

//编辑

请注意:目的是能够在JavaEE应用程序中使用MDB(针对共享主题进行负载平衡),该应用程序可以在视野范围内进行扩展。此问题与集群设置无关,因此useSharedSubscriptionInClusteredContainer(在Open MQ中)的使用不适用

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你就不需要这样做。允许单个订阅允许多个使用者的目的是解决Java SE限制,这在Java EE中不是问题:

http://www.oracle.com/technetwork/articles/java/jms2messaging-1954190.html

在Java EE中,您只需要创建MDB以订阅主题,然后将bean池配置为具有多个MDB:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-ejb-jar PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 EJB 3.1//EN" "http://glassfish.org/dtds/glassfish-ejb-jar_3_1-1.dtd">
<glassfish-ejb-jar>
  <enterprise-beans>
    <ejb>
      <ejb-name>MyPooledMDB</ejb-name>
      <bean-pool>
          <max-pool-size>5</max-pool-size>
          <resize-quantity>1</resize-quantity>
          <steady-pool-size>1</steady-pool-size>
      </bean-pool>
    </ejb>
  </enterprise-beans>
</glassfish-ejb-jar>

有关更多信息,请参阅Oracle GlassFish文档: https://docs.oracle.com/cd/E18930_01/html/821-2418/beait.html

请注意steady-pool-size ===&#34;初始和最小泳池尺寸&#34;