2023년 12월 18일 월요일

ABAP Proxy에서 호출된 EOIO+ACK호출은 왜 PO에서 홀딩로그만 보일까요?

인터페이스 현상정리

  • ABAPPROXY to JDBC 그리고 EOIO+ACK방식
  • 간혈적으로 발생되는 현상임
  • ACK상태가 'Still awaiting acknowledgment'일때만 PO로그상태가 'Holding'임?
  • 타겟에 프로시저 호출이 있음
  • 소스에서 배치로 실행되는데 해당 시간에 사용량이 많음?

EOIO특징

  • 앞에 메시지가 전송될때까지 뒤에있는 메시지는 Holding상태
  • 소스쪽에서 EOIO=exactly once in drder로 전송한 순서대로 전달 → 로그에 시퀀스넘버 생성됨
  • 처리중에 오류가 발생된 다음 로그들은 앞에 에러난 메시지가 처리(재처리성공,취소)될때까지 처리되지 않음
  • 에러로그 재처리 시도시 다음 메시지도 이어서 처리됨
  • 홀딩된 로그만 보이는 경우 검색조건을 길게 해서 동일 큐이름의 에러로그를 확인해야함
  • 그래도 찾기 힘들면 검색조건에 시퀀스아이디로 조회 가능

노츠에서도 시나리오는 다르지만 비슷한 현상의 내용을 볼수 있지만 간혈적으로 발생되고 원인으로는  ICO시나리오에서 사용되는 대기열(예 SOAP_http://sap.com/xi/XI/System)에서의 정체로 이해를 했으며 해결방안으로는 스레드 개수나 병렬처리 등에 대한 부분을 확인할수 있었습니다.

해결방안(SAP에서 권장하는 방식이 아닐수도 있음)

아는 지인을 통해 알게된 아래 노츠나 내용들을 참고하면 될것 같습니다.
이전에 작성한 관련 글 'How to delete holding message in sap po 7.5'를 참고하시면 되거나
만료되는 메시지의 보존시간을  수동으로 설정할수 있는 /MessagingSystem/archiving/reorgdb.jsp에 대한 설명이 나와있고 2137688 note에 delete job보다는 간편하게 로그를 삭제할수 있을것 같은데 두개 방식의 용도는 다를것 같습니다.

Change message status "Delivering" to "System Error"
SAP 권장하는 해결방안은 아니지만 update sap<sid>db.bc_msg set status='dlvd' where msg_id=<mssage id> 쿼리를 사용할수도 있는것 같은데 업데이트 후에 해당 메시지상태에서 후속처리가 가능할지는 모르겠습니다.

댓글 없음:

댓글 쓰기