我正在阅读以下网页中的example1:
http://www.programcreek.com/java-api-examples/index.php?api=javax.jms.QueueBrowser
在行中:
QueueBrowser browser = session.createBrowser(queue1);
在哪里
queue1
定义
这是我打开和关闭连接的例子:
public static void main(String[] args) throws Exception {
Logger logger = LoggerFactory.getLogger(Connection.class);
String hostname = "xxxxxx";
int port = 1442;
String queueManager = "xxxxxxxx";
String channel = "xxxxxxxxxx";
String queueName = "xxxxxxxxxx";
String keystore = "xxxxxxxxx/xxxxxxx/ssclient_test.ks";
String truststore = "cxxxxxx/xxxxxxxx/client_test.ts";
String suiteName = "xxx_xxx_xxxx_xxx_xxx_xxx";
String keyStorePassKey = "xxx_KEYSTORE";
SSLSocketFactory sslSocketFactory = createSslSocketFactory(new File(keystore), new File(truststore),
keyStorePassKey);
MQXAQueueConnectionFactory mqConnFactory = new MQXAQueueConnectionFactory();
mqConnFactory.setHostName(hostname);
mqConnFactory.setPort(port);
mqConnFactory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
mqConnFactory.setQueueManager(queueManager);
mqConnFactory.setChannel(channel);
mqConnFactory.setUseConnectionPooling(true);
mqConnFactory.setSSLSocketFactory(sslSocketFactory);
mqConnFactory.setSSLCipherSuite(suiteName);
QueueConnection queueConnection = mqConnFactory.createQueueConnection();
QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queueSession.close();
queueConnection.close();
}
在这种情况下如何定义队列?
答案 0 :(得分:1)
在您的示例代码中,MQXAQueueConnectionFactory
被实例化为空,然后使用setter方法填充所有属性。您可以通过实例化类型为Queue
的新的空目标,然后使用setter methods为MQ提供足够的详细信息以将其解析为实际队列来采用相同的方法。
或者,您可以在同一链接页面上采用示例3中的方法,并通过建立JNDI上下文并按名称检索预先存在的托管对象来查找队列。托管对象可以包含Properties of IBM MQ classes for JMS objects中记录的任何或所有属性。
在其中任何一种情况下,正在打开的队列必须已存在于队列管理器上。例如,您可以将SYSTEM.DEFAULT.LOCAL.QUEUE
指定为要浏览的队列,因为您可以非常确定它是否存在于队列管理器中。
答案 1 :(得分:1)
createBrowser方法需要放入队列。 为此,您需要创建一个新的合适的队列实例。
E.g。
ActiveMQQueue myQueue = new ActiveMQQueue("My queue");
QueueBrowser browser = session.createBrowser(myQueue);
如果感兴趣,请查看本指南: https://examples.javacodegeeks.com/enterprise-java/jms/jms-queuebrowser-example/
答案 2 :(得分:1)
您可以调用QueueSession.createQueue(qname)。 http://docs.oracle.com/javaee/6/api/javax/jms/QueueSession.html#createQueue(java.lang.String)