Всегда получайте MQJE001: код завершения «2», причина «2059». ОШИБКА

Я новичок в WebSphere MQ.

Я создал диспетчер очередей, канал и прослушиватель в AIX следующим образом:

crtmqm MY_Q_MGR

strmqm MY_Q_MGR

runmqsc

DEFINE LISTENER(MY_QM_LISTENER) TRPTYPE(TCP) PORT(5030)

DEFINE CHANNEL(MY_QM_CHANNEL) CHLTYPE(SDR) CONNAME('10.128.1.51(5030)') XMITQ('MY_Q_MGR') DISCINT(0)

Затем я проверил, что QMGR запущен. Я видел слушателя в proc.

Затем я попытался создать MQQueueManager из java следующим образом и получил MQJE001: Completion Code '2', Reason '2059'.

import com.ibm.mq.MQException;
import com.ibm.mq.MQGetMessageOptions;
import com.ibm.mq.MQMessage;
import com.ibm.mq.MQPutMessageOptions;
import com.ibm.mq.MQQueue;
import com.ibm.mq.MQQueueManager;
import com.ibm.mq.constants.MQConstants;
import com.ibm.mq.MQEnvironment;

public class MQSample {

  // code identifier
  static final String sccsid = "@(#) samples/wmqjava/MQSample.java, jmscc.samples, k700, k700-L080529 1.4.1.1 08/06/01 09:37:53";

    // define the name of the QueueManager
     private static final String qManager = "MY_Q_MGR";

  // and define the name of the Queue
  private static final String qName = "SYSTEM.DEFAULT.LOCAL.QUEUE";

  /**
   * Main entry point
   * 
   * @param args - command line arguments (ignored)
   */
  public static void main(String args[]) {
    try {
        MQEnvironment.hostname = "MY IP ADDRESS";
        MQEnvironment.channel = "MY_QM_CHANNEL";
        MQEnvironment.port = 5030;


      // Create a connection to the QueueManager
      System.out.println("Connecting to queue manager: " + qManager);
      System.out.println("Connecting to queue manager is finished: " + qManager);
      // Set up the options on the queue we wish to open
      int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_OUTPUT;

      // Now specify the queue that we wish to open and the open options
      System.out.println("Accessing queue: " + qName);
      MQQueue queue = qMgr.accessQueue(qName, openOptions);
      MQQueueManager qMgr = new MQQueueManager(qManager); // here i got error
      System.out.println("Connecting to queue manager is finished: " + qManager);
      // Set up the options on the queue we wish to open
      int openOptions = MQConstants.MQOO_INPUT_AS_Q_DEF | MQConstants.MQOO_OUTPUT;

      // Now specify the queue that we wish to open and the open options
      System.out.println("Accessing queue: " + qName);
      MQQueue queue = qMgr.accessQueue(qName, openOptions);

Я застрял здесь.


person Lwin Htoo Ko    schedule 28.06.2012    source источник


Ответы (1)


Вам нужен канал типа Sever connection (SVRCONN), а не тип SDR. Канал типа SVRCONN требуется клиентским приложениям для подключения к администратору очередей, где канал типа SDR предназначен для связи между двумя администраторами очередей.

При создании диспетчера очередей создается канал SVRCONN по умолчанию, SYSTEM.DEF.SVRCONN. Вы можете использовать это для своих тестов. Но в продакшене рекомендуется создать свой собственный канал и не использовать какие-либо предопределенные каналы.

См. эту ссылку для получения полной информации о том, что вам нужно сделать. Это из книги WebSphere MQ Quick Beginnings.

person Shashi    schedule 28.06.2012
comment
Большое спасибо. Я только что запустил программу. - person Lwin Htoo Ko; 28.06.2012