如何使用JavaAPI设置消息选择器?

如何使用JavaAPI设置消息选择器?,java,ibm-mq,Java,Ibm Mq,我试图编写一个简单的测试用例,根据消息属性从队列中提取消息,使用7.5.0.3 QMgr和7.5.0.3客户机JAR 我在网上看到的一切都表明,我需要在打开队列时指定消息选择器。我同意,但我只看到两种打开它的方法: MQQueueManager.accessQueue( String queueName, int openOptions); MQQueueManager.accessQueue( String queueName, int openOptio

我试图编写一个简单的测试用例,根据消息属性从队列中提取消息,使用7.5.0.3 QMgr和7.5.0.3客户机JAR

我在网上看到的一切都表明,我需要在打开队列时指定消息选择器。我同意,但我只看到两种打开它的方法:

MQQueueManager.accessQueue(
    String queueName, 
    int openOptions);

MQQueueManager.accessQueue(
    String queueName, 
    int openOptions, 
    String queueMgr, 
    String dynamicQueueName, 
    String altUserId);
这两个选项都不允许我指定消息选择器。我是从命令行批处理应用程序而不是在应用服务器中运行它的,因此不可能使用JMS选择器


以下是有关选择器的IBM文档:它显示选择必须作为MQOPEN调用的一部分进行。

尝试从队列读取消息时,应指定选择器,如下所示:

            MQMessage ResponseMsg = new MQMessage();
            ResponseMsg.correlationId = CorrelationId;
            MQGetMessageOptions gmo = new MQGetMessageOptions();
            gmo.options = MQConstants.MQGMO_WAIT;
            gmo.waitInterval = WaitTime * 1000;
            gmo.matchOptions = MQConstants.MQMO_MATCH_CORREL_ID;
            ResponseQueue.get(ResponseMsg, gmo);

MQ JMS API提供了您要查找的消息选择语法的类型。基本mqjavaapi提供基于MessageId和CorrelationId的消息选择,但它还没有提供您正在寻找的类型选择语法。您提供的文档链接是针对MQ C API的

使用MQ JMS API,可以按如下所示选择消息:

      // Create JMS objects
      connection = cf.createConnection();
      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

      // Create queue destination 
      Destination queDest= session.createQueue(que);

      // Create consumer with selector
      String selector = "category='bucket1'";         
      MessageConsumer cons= session.createConsumer(queDest, selector);

      connection.start();
      // receive messages
      Message inMessage = cons.receive(5000);

通过属性选择消息是否有效?MQ文档表示必须将其指定为MQOD的一部分。请参阅第五页,当我发送消息时,我希望能够执行类似mqMessage.setStringProperty(“category”、“bucket1”)的操作;然后可以只选择category=bucket1Thanks的消息-我已经看到了。我是在一个独立的java应用程序中完成这项工作的,而不是在应用服务器上。如果没有appserver环境(特别是JNDI),我想我不能使用JMS接口,可以吗?你可以。对于JNDI,如果app server不可用,您可以指向文件服务器。