如何为 QueueBrowser 定义一个队列?

How to define a queue for QueueBrowser?

我正在阅读以下网页中的示例 1:

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();
}

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

在您的示例代码中,MQXAQueueConnectionFactory 实例化为空,然后使用 setter 方法填充所有属性。您可以采用相同的方法,实例化一个 Queue 类型的新的空目标,然后使用 setter methods 为 MQ 提供足够的细节以将其解析为实际队列。

或者,您可以在同一链接页面上采用示例 3 中的方法,并通过建立 JNDI 上下文并按名称检索预先存在的托管对象来查找队列。托管对象可以具有 Properties of IBM MQ classes for JMS objects.

中记录的任何或所有属性

在任何一种情况下,正在打开的队列必须已经存在于队列管理器中。例如,您可以指定 SYSTEM.DEFAULT.LOCAL.QUEUE 作为要浏览的队列,因为您可以非常确定它存在于队列管理器中。

createBrowser 方法需要放入一个队列。 为此,您需要创建一个新的合适的队列实例。

例如

ActiveMQQueue myQueue = new ActiveMQQueue("My queue");
QueueBrowser browser = session.createBrowser(myQueue);

如果有兴趣,请查看本指南: https://examples.javacodegeeks.com/enterprise-java/jms/jms-queuebrowser-example/

您可以调用 QueueSession.createQueue(qname)。 http://docs.oracle.com/javaee/6/api/javax/jms/QueueSession.html#createQueue(java.lang.String)