我有一个mdb附加到websphere的侦听器端口,它将从队列中读取消息并将其保存到数据库。
现在,在使用sessionBean发送请求时,我在消息中添加了相关ID。
msg.setJMSCorrelationId(theID);
我当前的MDB代码是
onMessage(Message message) {
//it will read the message and insert to db
}
我希望我的MDB只收听具有我在发送邮件时设置的相关ID的邮件。
有人可以建议怎么做吗?
答案 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:)