2013-03-21 2 views
0

메시지를받는 오케스트레이션이 있습니다. 대상 네임 스페이스는 "http://microsoft.com/HealthCare/HL7/2X"이고 루트 요소는 "ORU_R01_23_GLO_DEF"입니다.BizTalk 오케스트레이션에서 생성 된 메시지를 구독하는 방법은 무엇입니까?

오케스트레이션에서 메시지를 구성 도형의 중간 메시지 유형에 매핑합니다. 대상 네임 스페이스는 "http://mycompany.com/myapplication"이고 루트 요소는 "MyMessage"입니다. 그런 다음 "MyMessage"메시지가 추가로 매핑 된 다음 오케스트레이션의 논리 전송 포트를 사용하여 웹 서비스로 전송됩니다. 그러면 WCF 송신 포트가 오케스트레이션에 바인딩되고 모든 것이 올바르게 작동합니다. 모든 것이 예상대로 작동합니다.

오케스트레이션을 변경하지 않고 중간 "MyMessage"메시지를 구독하는 송신 포트를 만들어 파일에 씁니다. 이렇게하려면 BTS.MessageType = http://mycompany.com/myapplication#MyMessage 필터를 사용하여 송신 포트를 만들었습니다.

메시지가 오케스트레이션을 통해 전송 되더라도 내 송신 포트가 메시지를 선택하지 않습니다. 이것은 잘못된 필터입니까?

답변

3

'MyMessage'메시지 또는 실제 WCF 송신 포트에 바인딩 된 논리 송신 포트로 전송 된 것과 동일한 메시지를 신청하려고합니까?

은 "MyMessage"메시지가 다음 더 매핑하고 오케스트레이션의 논리적 송신 포트를 사용하여 웹 서비스로 전송됩니다 :

당신은 것을 주장했다. 그러면 WCF 송신 포트가 오케스트레이션에 바인딩되고 모든 것이 올바르게 작동합니다.

메시지 MSGBOX에 게시하지 당신이 설명한 것을, 당신이 보내기 모양이없는 것을 제안에서

/논리적 'MyMessage'메시지에 대한 오케스트레이션 포트 조합을 전송하는 포트 전송 필터에서이 메시지 유형을 수동으로 구독 할 수없는 이유입니다. '실패한 라우팅 보고서'메시지를 언급하지 않았다는 사실은 이것이 사실임을 암시합니다.이 메시지 유형은 MsgBox에 게시 할 메시지에 대한 구독 정보를 찾을 수 없을 때 생성됩니다.

캡처 메시지의 '메세지 유형'

당신이 당신의 포트를 보내기 WCF를 통해 전송되는 메시지의 사본을 캡처해야하지만, 당신은 메세지 유형을 결정하고 사용해야하는 경우 메시지를 파일에 쓰는 두 번째 전송 포트 구독에서 같은 오케스트레이션을 통해 메시지를 보내기

  1. 정지 (등록을 취소하지 않음) WCF 포트
  2. 보내기 : 당신이 메세지 유형이 사용하는 것과 같은 확실하지 않은 경우

    ,이 정보를 확인하는 간단한 트릭이있다 normal - WCF 전송 포트의 BizTalk 관리 콘솔에서 메시지가 'Suspended Resumable'으로 표시됩니다.

  3. BizTalk 관리 콘솔에서 메시지를 열고 '메시지 컨텍스트'를 봅니다. Message Context에서 'MessageType'속성을 볼 수 있습니다.이 속성을 사용하여 사용할 구독 필터를 이해할 수 있습니다.
  4. WCF 송신 포트를 시작하여 메시지를 비 웁니다.

오케스트레이션을 변경하지 않으려면 (원본) WCF 전송 포트의 전송 파이프 라인을 통과 할 때 메시지를 보관할 수 있습니다. 자신의 보관 구성 요소를 작성하거나 existing commercial component. 이러한 방식으로 보관 구성 요소를 사용하면 추가 가입 및 관련 송신 포트 유지 관리 비용을 절약 할 수 있습니다.

업데이트 : 그것은 매우 많은 영업 이익 (주석 참조) 자신의 오케스트레이션에서 메시지 상자에 중간 메시지를 전송하지 같은 소리

. 메시지 구독은 이 메시지 상자에으로 게시 된 경우에만 작동합니다.이 경우 해당 메시지 ('메시지 B')는 오케스트레이션의 수명이 & 인 중개 메시지입니다. OP는 메시지를 송신 포트를 통해 구독 할 수 있도록 오케스트레이션 내의 직접 연결 포트로 메시지를 보내야합니다.

+0

나는 오케스트레이션을 비등시킬 것이다. 메시지 A가 들어옵니다.이 메시지는 새 메시지 B에 매핑되고 새 메시지 C에 매핑됩니다. 메시지 C는 WCF 양방향 전송 포트로 보내집니다. 메시지 C와 WCF 송신 포트의 응답에 가입 할 수 있습니다. 메시지 B는 오케스트레이션이지도를보다 직관적으로 유지하기 위해 사용하는 중간 메시지입니다. 궁극적으로 통합은 메시지 A와 C에 대해서만 신경을 쓰지만, 진단 보류에서 필요한 경우 메시지 B에 가입하고 싶습니다. – Jeremy

+3

Jeremy, 메시지 상자에 메시지 B를 보내지 않아서 송신 포트의 가입을 활성화 할 수있는 것 같습니다. 메시지 B는 오케스트레이션 컨텍스트 내에서만 살며 메시지 상자에 게시되지 않습니다. 따라서 Direct Bound로 구성된 논리적 송신 포트로 맨 위 메시지 B를 보내야합니다. –

+0

제 대답에 대한 업데이트를 참조하십시오. –

0

송신 포트의 파이프 라인을 확인하십시오. XML로, Passthrougth하지 않아야합니다.

관련 문제