如何为QueueBrowser定义队列?

时间:2016-05-24 13:46:49

标签: java queue jms ibm-mq

我正在阅读以下网页中的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();
}

在这种情况下如何定义队列?

3 个答案:

答案 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)