在 MQ 中浏览给定的文本

Browsing for a given text in MQ

我是 MQ 的新手,我要开发一个模块来接受来自用户的文本并在 MQ 中浏览以搜索特定的给定文本。

我有队列的主机、端口和 QueueManager 详细信息。我只需要知道如何在指定的 MQ 中连接和浏览给定的用户文本。

控制器的任何示例代码都会对理解这个概念很有帮助。

有一个示例,JmsBrowser.java 随 MQ 一起提供。我把它复制在这里供你参考。

此示例打开一个队列并浏览该队列中的邮件。您将需要添加一点代码来扫描邮件正文并找到您的文本。

更好的方法是:

1) 生产者设置消息属性.

2) 消费者使用一条消息 select 或 select 条消息 属性。 有关详细信息,请参阅 here。这样您就可以避免浏览消息以获得您感兴趣的消息。

 public static void main(String[] args) {


    // Variables

Connection connection = null;
Session session = null;
Queue destination = null;
QueueBrowser browser = null;

try {
  // Create a connection factory
  JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
  JmsConnectionFactory cf = ff.createConnectionFactory();

  // Set the properties
  cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, host);
  cf.setIntProperty(WMQConstants.WMQ_PORT, port);
  cf.setStringProperty(WMQConstants.WMQ_CHANNEL, channel);
  if (clientTransport) {
      cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
  }
  else {
      cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_BINDINGS);
  }
  cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, queueManagerName);

  // Create JMS objects
  connection = cf.createConnection();
  session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  destination = session.createQueue(queueName);
  browser = session.createBrowser(destination);

  // Start the connection
  connection.start();

  // And, browse the message
  Enumeration<?> messages = browser.getEnumeration();
  int count = 0;
  Message current;
  System.out.println("Browse starts");
  while (messages.hasMoreElements()) {
    current = (Message) messages.nextElement();
    System.out.println("\nMessage " + ++count + ":\n");
    System.out.println(current);
  }
  System.out.println("\nNo more messages\n");

  recordSuccess();
}
catch (JMSException jmsex) {
  recordFailure(jmsex);
}
finally {
  if (browser != null) {
    try {
      browser.close();
    }
    catch (JMSException jmsex) {
      System.out.println("Browser could not be closed.");
      recordFailure(jmsex);
    }
  }

  if (session != null) {
    try {
      session.close();
    }
    catch (JMSException jmsex) {
      System.out.println("Session could not be closed.");
      recordFailure(jmsex);
    }
  }

  if (connection != null) {
    try {
      connection.close();
    }
    catch (JMSException jmsex) {
      System.out.println("Connection could not be closed.");
      recordFailure(jmsex);
    }
  }
}
System.exit(status);
return;

} // 结束 main()