以下是我如何通过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
的邮件。
答案 0 :(得分:1)
您的问题陈述中有点不清楚,但听起来您希望根据其设置的JMSType过滤消息,这是使用传递给createConsumer方法的JMS selector表达式完成的。
您可以创建选择器表达式来过滤所需的内容,例如:
JMSType = 'car' AND color = 'blue' AND weight > 2500
但请记住,消息代理不是一个数据库,因此对它进行处理通常会以泪流满面。
快速谷歌的JMS消息选择器'将为您提供有关该主题的丰富阅读。