내 코드 :C 번호 : IBM MQ '잠금 해제'메시지 읽기를 사용하는 경우() 메소드
//Initialize MQMessage
MQMessage message = new MQMessage();
//Initialize WebMQConnection
WebSphereMQConnection mqRequestConnection = new WebSphereMQConnection(initQMName, initQChannel, initQConnection, initQName, string.Empty, string.Empty);
mqRequestConnection.Open();
mqRequestConnection.Read(message);
//Get the contents as a string
string body = message.ReadString(message.MessageLength);
return body;
이 코드는 콘솔 응용 프로그램의 일부이며 큐를 순차적으로 탐색하고 각 메시지를 읽는 예상대로 작동합니다. 플랫 파일에서 문자열 컨텐츠를 구문 분석합니다.
그러나 Read() 메서드는 프로그램이 닫힐 때까지 메시지를 잠그는 것으로 보입니다. 순차적으로 모든 메시지를 읽는 루프에서 프로그램을 실행하더라도 프로그램이 완전히 닫힐 때까지 메시지를 '해제'하지 않는 것 같습니다.
나는 가져 오기 및 내리기, 삭제, 취소 등을 시도했지만 아무 것도 콘솔 앱 실행을 중지하는 것 외에는 아무런 작용을하지 않는 것 같습니다.
'WebSphereMQConnection'는 IBM에서 제공하는 뭔가처럼 보이지 않는다. 이 일을 게시 할 수 있습니까? 싱크 포인트 아래에서 대기열을 여는 중입니까? 그렇다면 메시지를 "릴리스"하기 위해 MQ에 커밋을 추가해야합니다. – JoshMc
@JoshMc 이것은 Syncpoint 작업을 처리하는 Open()을 호출 할 때 큐 관리자를 생성하는 클래스의 생성자입니다. 내가 통제 할 여지가없는 레거시 코드입니다. 커밋을 추가하려고했지만 아무 것도하지 않는 것 같습니다. 나는 문제가 내가 준 핵심 코드와 관련 있다고 생각하기 시작했다. – Reed
아마도 커밋을 수행하는 방법이 있습니까? – JoshMc