개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.10 13:58

MQSeries ConnX 관련 질문

목록
  • GraphQL러버 13일 전 2025.03.10 13:58
  • 11
    1
제가 MQSeries ConnX를 사용하여 MQQueueManager를 생성하고 MQQueue에 메시지를 보낼 때, 다음과 같은 오류가 발생합니다.

오류 메시지는 "MQRC_UNKNOWN_OBJECT_NAME"으로 나타납니다.

오류가 발생하는 코드는 아래와 같습니다.

c

MQCONN Conn;

MQCD ConnD;

MQOD ConnOD;

MQGMO ConnGMO;

MQHCONN HConn;

MQIconn IConn;

MQTConn TConn;

MQC ConnC;



// MQQueueManager 생성

MQCONN Conn;

MQCD ConnD;

ConnD.ChannelName = "CHANNEL1";

ConnD.ConnectionName = "CONN1";

ConnD.SSLCipherSpec = MQC.MQCCF_SSL_CIPHER_SPEC;

ConnD.SSLPeerName = "localhost";

ConnD.TransportType = MQC.MQXPT_TCP;

MQCONN(Conn, ConnD);



// MQQueueManager에 연결

MQOPEN(Conn, ConnOD);



오류가 발생하는 부분은 MQOPEN(Conn, ConnOD)입니다.

MQOPEN(Conn, ConnOD)에서 오류가 발생하는 이유는 무엇이며, 어떻게 해결할 수 있는지 알려주시겠습니까?

    댓글목록

    profile_image
    나우호스팅  13일 전



    MQOPEN 함수를 호출할 때, 오류가 발생하는 이유는 MQQueueManager에 연결할 수 없는 경우입니다.

    이러한 오류는 다음 이유로 발생할 수 있습니다.

    1. MQQueueManager가 존재하지 않음
    2. MQQueueManager에 연결할 수 있는 권한이 없음
    3. MQQueueManager의 이름이 잘못됨

    오류를 해결하기 위해서는 다음을 확인해야 합니다.

    1. MQQueueManager가 존재하는지 확인
    2. MQQueueManager에 연결할 수 있는 권한이 있는지 확인
    3. MQQueueManager의 이름이 정확한지 확인

    MQQueueManager가 존재하는지 확인하기 위해서는 MQDISC 함수를 호출하여 MQQueueManager와 연결을 끊고, 다시 MQOPEN 함수를 호출하여 연결을 시도할 수 있습니다.

    MQQueueManager에 연결할 수 있는 권한이 있는지 확인하기 위해서는 MQGET 함수를 호출하여 MQQueueManager의 권한을 확인할 수 있습니다.

    MQQueueManager의 이름이 정확한지 확인하기 위해서는 MQGET 함수를 호출하여 MQQueueManager의 이름을 확인할 수 있습니다.

    예제 코드는 다음과 같습니다.

    #hostingforum.kr
    c
    
    MQCONN Conn;
    
    MQCD ConnD;
    
    MQOD ConnOD;
    
    MQGMO ConnGMO;
    
    MQHCONN HConn;
    
    MQIConn IConn;
    
    MQTConn TConn;
    
    MQC ConnC;
    
    
    
    // MQQueueManager 생성
    
    MQCONN Conn;
    
    MQCD ConnD;
    
    ConnD.ChannelName = "CHANNEL1";
    
    ConnD.ConnectionName = "CONN1";
    
    ConnD.SSLCipherSpec = MQC.MQCCF_SSL_CIPHER_SPEC;
    
    ConnD.SSLPeerName = "localhost";
    
    ConnD.TransportType = MQC.MQXPT_TCP;
    
    MQCONN(Conn, ConnD);
    
    
    
    // MQQueueManager에 연결
    
    MQOPEN(Conn, ConnOD);
    
    
    
    // 오류가 발생한 경우
    
    if (MQCC_FAILED == MQOPEN(Conn, ConnOD)) {
    
        // 오류 코드를 확인하여 오류의 원인을 파악
    
        int rc = ConnOD.Status;
    
        if (MQRC_UNKNOWN_OBJECT_NAME == rc) {
    
            // MQQueueManager가 존재하지 않음
    
            // MQQueueManager를 생성하거나, 존재하는 MQQueueManager의 이름을 확인
    
        } else if (MQRC_NOT_AUTHORIZED == rc) {
    
            // MQQueueManager에 연결할 수 있는 권한이 없음
    
            // 권한을 확인하고, 권한이 있는 경우 MQOPEN 함수를 호출
    
        } else {
    
            // MQQueueManager의 이름이 잘못됨
    
            // MQQueueManager의 이름을 확인하고, 정확한 이름을 사용하여 MQOPEN 함수를 호출
    
        }
    
    }
    
    


    오류를 해결하기 위해서는 오류 코드를 확인하여 오류의 원인을 파악하고, 적절한 해결책을 적용하여 오류를 해결해야 합니다.

    2025-03-10 13:59

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 5,858건 / 223 페이지

검색

게시물 검색