根据Correlation ID从队列中读取特定消息

时间:2015-03-04 09:19:38

标签: java ejb jms websphere message-driven-bean

我有一个mdb附加到websphere的侦听器端口,它将从队列中读取消息并将其保存到数据库。

现在,在使用sessionBean发送请求时,我在消息中添加了相关ID。

msg.setJMSCorrelationId(theID);

我当前的MDB代码是

onMessage(Message message) {
//it will read the message and insert to db
}

我希望我的MDB只收听具有我在发送邮件时设置的相关ID的邮件。

有人可以建议怎么做吗?

1 个答案:

答案 0 :(得分:0)

在mdb的ejb-jar.xml中使用消息选择器。消息选择器仅用于接收满足特定条件的消息。此处的条件是相关ID,它是预定义字段。

<activation-config-property>
            <activation-config-property-name>messageSelector</activation-config-property-name>
            <activation-config-property-value><![CDATA[JMSCorrelationID = 'value']]></activation-config-property-value>
        </activation-config-property>

注意:恕我直言,将相关ID设置为消息选择器是一个坏主意,因为在需要使用JMS相关ID的用例中,每条消息通常都有自己的值。您可能最终需要每条消息使用MDB:)