在 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()
我是 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()