首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有2个监听器的JMS队列

具有2个监听器的JMS队列
EN

Stack Overflow用户
提问于 2013-06-19 23:27:48
回答 2查看 3.4K关注 0票数 1

我有一个关于JMS队列的问题。

我已经实现了一个jms发送器/接收器,它使用一个共享队列作为我唯一可用的队列,也是我唯一可以使用的队列。

我现在面临的问题是,作为这个先到先服务的人,我不能保证我从生产者发送的消息将被我的消费者消费,而不是共享这个队列的另一个消费者,反之亦然。所以我正在使用其他应用程序的消息,它们也在使用我的消息。

有没有一种方法,我可以只监听我的消息,而不使用队列中的消息,或者这更像是一个主题实现?

或者,我可以显式地设置一个只有我的消费者才会选择的标识符。

我的主要代码:

代码语言:javascript
复制
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  ();                                                                      
  }
EN

回答 2

Stack Overflow用户

发布于 2013-06-19 23:34:09

您应该使用JMS选择器。每个JMS消息都可以包含您在发送者端启动的属性。

消息消费者可以注册到JMS目的地(队列或主题),指定类似selector -SQL的语句来解释它想要使用哪些消息。因此,您可以指定特定于应用程序的属性,然后只接收相关消息。

票数 1
EN

Stack Overflow用户

发布于 2013-06-24 13:01:45

您可以使用消息选择器,如下所示

queueReceiver = queueSession.createReceiver(responseQueue,"JMSCorrelationID='“+ requestMessage.getJMSCorrelationID() +"'");

在这里,我使用JMS相关ID来标识我需要的正确消息。请注意,筛选器仅适用于邮件头和邮件属性。它不会对消息内容起作用。

有关邮件头和属性的详细信息:http://docs.oracle.com/javaee/1.4/tutorial/doc/JMS4.html#wp79367

如果需要根据邮件内容进行过滤,则可能需要使用QueueSession.MANUAL_ACKNOWLEDGE模式并确认所需的邮件。在这种情况下,应用程序必须具有根据内容识别消息的逻辑。虽然不是理想的设计。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17195246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档