我有一个关于JMS队列的问题。JMS队列与2个监听器
我已经实现了一个jms发送器/接收器使用共享队列作为唯一的队列avaialbe给我和唯一我可以使用。
我现在面临的问题是,我第一次服务的时候,我无法保证我从我的制作者发送的消息将被我的消费者使用,而不是其他人共享此队列,反之亦然。所以我正在消费其他应用程序的消息,他们正在消耗我的。
有没有一种方法,我可以只听我的消息,而不是从队列中消耗它们,或者这是更多的主题实现?
或者我可以明确地设置一个标识符,只有我的消费者才会拿起。
我的主要代码:
public class AsyncReceiver implements MessageListener, ExceptionListener
{
public static void main(String[] args) throws Exception
{
//create queue factory
factory = new TibjmsQueueConnectionFactory(serverUrl);
//create queue connection
queueConn = factory.createQueueConnection(userName, password);
queueConn.setExceptionListener(this);
//create queue session
session = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
//receive message by QueueReceiver
final Queue queue = session.createQueue(queueName);
final QueueReceiver queueReceiver = session.createReceiver(queue);
queueReceiver.setMessageListener(this);
queueConn.start ();
}
感谢@AlexR的回应,您是否会举例说明我可以如何做到这一点?这是设置在消息本身,不一定是发件人的连接?在接收器上,选择器是在创建QueuReciever时指定的? '最终QueueReceiver queueReceiver = session.createReceiver(队列,“JMS_SELECTOR”);' – PMC2013