2016-01-24 66 views
0

这里是我怎么订阅到消息队列在OpenWire协议:如何将JMSType设置为Java中的订阅者?

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

从您的问题陈述中稍微不清楚,但听起来好像您要基于其设置的JMSType来过滤消息,这通过传递给createConsumer方法的JMS selector表达式完成。

创建选择表达式过滤你要像什么:

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

但是请记住,消息代理不是一个数据库,并把它当作这种通常在流泪结束。

快速谷歌的'JMS消息选择器'将给你一个关于这个问题的丰富阅读。

+0

我知道它是什么以及如何创建它。我在问我如何使用它。 –

+1

然后,你需要以人们知道你在问什么的方式提问,我不知道你想知道更多。 –

+0

首先,你的代码不会编译。 –

相关问题