MQ客户端应用程序连接到客户端

时间:2019-12-17 16:42:58

标签: java ibm-mq

我编写了一个客户端应用程序以连接到MQ。它在svrconn通道上工作正常,但在其他通道上不工作。

我的代码:

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);
    cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
    cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, QMGR);
    cf.setStringProperty(WMQConstants.WMQ_APPLICATIONNAME, "JmsPutGet (JMS)");
    cf.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, true);
    cf.setStringProperty(WMQConstants.USERID, APP_USER);
    cf.setStringProperty(WMQConstants.PASSWORD, APP_PASSWORD);

    // Create JMS objects
    context = cf.createContext();
    destination = context.createQueue("queue:///" + QUEUE_NAME);

    long uniqueNumber = System.currentTimeMillis() % 1000;
    TextMessage message = context.createTextMessage("Your lucky number today is " + uniqueNumber);

    producer = context.createProducer();
    producer.send(destination, message);
    System.out.println("Sent message:\n" + message);

    consumer = context.createConsumer(destination); // autoclosable
    String receivedMessage = consumer.receiveBody(String.class, 15000); // in ms or 15 seconds

    System.out.println("\nReceived message:\n" + receivedMessage);

    recordSuccess();
}

请帮助解决以下两个问题:

  1. 如何连接到处于客户端模式的qmgr?
  2. 如何使此代码也连接到其他渠道?

现在,当我尝试使用其他频道时,出现以下错误:

JMSWMQ0018: Failed to connect to a queue manager 'qmgr name' with connection mode 'Client'

1 个答案:

答案 0 :(得分:0)

您已在cf.setStringProperty(WMQConstants.WMQ_CHANNEL,CHANNEL)中指定了通道名称; 如果您使用cf.setStringProperty(WMQConstants.WMQ_CHANNEL,“ MYOTHERCHANNEL”); 它将尝试使用该频道名称而不是您指定的名称