如何使用 Java API 设置消息选择器?
How do you set a message selector using Java API?
我正在尝试编写一个简单的测试用例,以根据消息 属性 从队列中提取消息,使用 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 文档:WebSphere MQ Message Selectors 它表明选择必须作为 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 提供了您正在寻找的消息选择语法类型。基本 MQ Java API 提供基于 MessageId 和 CorrelationId 的消息选择,它还没有提供您正在寻找的类型选择语法。您提供的文档 link 适用于 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);
我正在尝试编写一个简单的测试用例,以根据消息 属性 从队列中提取消息,使用 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 文档:WebSphere MQ Message Selectors 它表明选择必须作为 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 提供了您正在寻找的消息选择语法类型。基本 MQ Java API 提供基于 MessageId 和 CorrelationId 的消息选择,它还没有提供您正在寻找的类型选择语法。您提供的文档 link 适用于 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);