配置MDB以侦听多个队列

时间:2011-05-04 15:46:52

标签: java jms message-driven-bean

我正在使用EJB 3.1,我想配置一个MDB来监听多个队列 我更喜欢通过XML定义队列名称,而通过注释定义其他定义 可以这样做吗?

2 个答案:

答案 0 :(得分:6)

一旦实例化,MDB只能侦听其目标ActivationConfigProperty中指定的资源,但是可以创建具有不同目标的相同MDB的多个实例(在您的情况下为队列)。

在ejb-jar.xml中创建两个具有不同destination和ejb-name属性的条目,但是ejb-class相同。

答案 1 :(得分:0)

使用ejb-jar.xml而不是ibm-ejb-jar-bnd.xml

    <message-driven>
        <ejb-name>MessageDrivenBean1</ejb-name>
        <ejb-class>com.sample.MessageDrivenBean</ejb-class>
        <messaging-type>javax.jms.MessageListener</messaging-type>
        <transaction-type>Container</transaction-type>
        <activation-config>
            <activation-config-property>
                <activation-config-property-name>destinationType</activation-config-property-name>
                <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
            </activation-config-property>
        </activation-config>
    </message-driven>

    <message-driven>
        <ejb-name>MessageDrivenBean2</ejb-name>
        <ejb-class>com.sample.MessageDrivenBean</ejb-class>
        <messaging-type>javax.jms.MessageListener</messaging-type>
        <transaction-type>Container</transaction-type>
        <activation-config>
            <activation-config-property>
                <activation-config-property-name>destinationType</activation-config-property-name>
                <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
            </activation-config-property>
        </activation-config>
    </message-driven>

</enterprise-beans>

从Java类中删除@MessageDriven注释

'@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
    })'