如何在Java中将JMSType设置为订户?

时间:2016-01-24 11:29:46

标签: java push-notification activemq

以下是我如何通过OpenWire协议订阅消息队列:

import java.io.FileWriter;
import java.io.PrintWriter;
import javax.jms.*;


//..........
subscriberPublishSubscribe = new Subscriber();
subscriberPublishSubscribe.create(URL, "login", "pass", TOPICNAME, SUBSCRIPTIONID);

//.......
Connection connection = factory.createConnection();
connection.setClientID(clientId);
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(topicName);
messageConsumer = session.createDurableSubscriber(topic, subId);
JMSMessageListener listener = new JMSMessageListener();
messageConsumer.setMessageListener(listener);
connection.start();

如何使用课程JMSType过滤邮件?这是我可能需要使用的代码:

Message msg = session.createMessage();
msg.setJMSType("some_jms_type");

// What's next?

再一次,我是订阅者,而不是制作人,因此我只想接收只有JMSType的邮件。

1 个答案:

答案 0 :(得分:1)

您的问题陈述中有点不清楚,但听起来您希望根据其设置的JMSType过滤消息,这是使用传递给createConsumer方法的JMS selector表达式完成的。

您可以创建选择器表达式来过滤所需的内容,例如:

JMSType = 'car' AND color = 'blue' AND weight > 2500

但请记住,消息代理不是一个数据库,因此对它进行处理通常会以泪流满面。

快速谷歌的JMS消息选择器'将为您提供有关该主题的丰富阅读。