2009-07-17 7 views
1

완벽하게 작동하는 BizTalk 2006 R2 응용 프로그램이 있습니다. 메시지를 수신하여 처리하고 올바른 응답을 보냅니다. BizTalk의 좀비

그러나 모든 (메시지가 성공적으로 오케스트레이션에 의해 선택되고, 응답이 오류없이 전송됩니다) 정확하지만은 BizTalk 여전히 오류 응답 메시지에 관련된 "소비되지 메시지"를 생성

...

나는 응용 프로그램의 모든 비트를 디버깅했는데 오류가없고 중복 된 메시지가없고 메시지가 남겨지지 않고 아무것도 남지 않았습니다 ... 오류를 봤는데 주제에 관한 몇 가지 링크가 많이 있습니다. 좀비는 스크립트를 정리합니다. 이것은 BizTalk의 일반적인 문제가 아닌지 궁금합니다 ...

이 오류의 원인은 무엇입니까?

+0

오류에 대한 추가 정보를 게시 할 수 있습니까? 어떤 종류의 응답을 받도록 설정 되었습니까? 메시지 상자에 메시지가 없으면이 메시지가 표시됩니다. –

답변

2

좀비처럼 들립니다. 오케스트레이션은 상관 관계와 대기 시간을 사용합니까? 그렇다면 좀비 랜드에 있습니다. 문제는 잠시 기다려서 첫 번째 트리거를 기다리는 읽기를 기다리는 것입니다. 대기가 먼저 시작되면 상관 관계에 대한 새 메시지가 나타납니다 ... 좀비.

오케스트레이션에 대해 더 자세히 알려주고 해결책을 더 논의 할 수 있습니다.

5

예 ... 대부분의 경우 솔루션을 함께 사용하는 방식을 약간 변경하면 해결할 수있는 일반적인 문제입니다.

좀비는 일반적으로 상관 시간과 시간 제한을 사용할 때 발생하지만 유일한 시간은 아닙니다. 오케스트레이션은 상관 집합에 대한 응답 또는 제한 시간이 초과 될 때까지 탈조됩니다. 시간 초과가 발생하면 오케스트레이션은 상관 관계가있는 응답을 기다리는 수신 위치를 지나서 처리하도록 진행합니다. 이제 메시지 상자에 응답이 표시되지만 더 이상 응답을 기다리는 메시지는 없습니다. 따라서 귀하의 오류.

웹 서비스를 호출하고 응답을 기다리는 경우에도이 동작을 보았습니다. 그러나 이것은 내가 어떻게 오류를 다루는 지와 관련이있었습니다. 내 프로세스에 대한 약간의 변경으로이 문제가 해결되었습니다.

이 문제의 발생을 최소화하는 방법은 오케스트레이션이 시간 초과 후에 수행하는 작업량을 줄이는 것입니다. 좀비 창을 가능한 한 작게 만드십시오.

때때로 이러한 비 결정적 종료 문제를 피할 수 없으므로 이러한 메시지를 받고 자체적으로 정리하는 "ZombieHandler"프로세스를 직접 만들었습니다.

프로세스에 대한 자세한 정보를 게시 할 수 있다면 더 많은 도움을 받으실 수 있습니다.

0

오류는 BizTalk 그룹 패널에 있지만 이벤트 로그에는 나타나지 않으며 "모든 메시지를 소비하지 않고 인스턴스가 완료되었습니다. 인스턴스 및 사용되지 않은 메시지가 일시 중단되었습니다." 기본적으로 양방향 포트를 통해 메시지를받는 주요 오케스트레이션이 있고 상관 관계를 초기화하는 동안 메시지 상자로 보냅니다. 이 오케스트레이션의 다음 모양은 메시지를 기다리고 (시간 제한 논리없이) 이전 보내기 모양에서 생성 된 상관 관계를 따릅니다. 응답이 수신되면 원래의 요청자에게 다시 전달됩니다.

로직이 거의없는 매우 간단한 오케스트레이션입니다 (스크린 샷 : http://img139.imageshack.us/img139/2307/orchestration.jpg). 요점은 올바른 응답을 항상 얻고 있으므로 "메시지를 소비하지 않음"오류를 유발하는 것이 무엇인지 파악할 수 없습니다. 그런데 소비되지 않은 것으로 표시된 메시지는 응답 메시지입니다.

추가 아이디어가 있으십니까?

ps. 라이언 크로우, 좀비 핸들러에 대해 자세히 설명해 줄 수 있니? 그러한 속성을 어떤 속성에 바인딩합니까?

+0

여기 오케스트레이션의 스냅 샷을 제공해 주시겠습니까? 그것을 간략히 살펴보면 도움이 될 것입니다. 양방향 수신과의 상관 관계와 관련하여 몇 가지 문제가있을 수 있습니다. –

+0

완료. 메시지를 업데이트하고 스크린 샷을 추가했습니다. –

0

왜 상관 집합을 사용하고 있습니까? 상관 세트에 대해 수신을 초기화하고 있는데, 다음 수신은 어디입니까?

뒤로 물러나서 상관 관계에 대한 요구 사항을 설명 할 수 있습니까? 토지를 묶으려고하는 메시지는 무엇입니까? 이 오케스트레이션에서 상관 관계를 제거하면 완벽하게 작동합니다.

여기에 link과 상관 관계 튜토리얼이 있습니다.

0

@ChrisLoris : 오케스트레이션의

스크린 샷 : http://img139.imageshack.us/img139/2307/orchestration.jpg

스크린 샷에서 당신은 내가 송신에 연결된 오케스트레이션을 가지고 있음을 알 수 이상은/수신 포트. 기본적으로 나는 메시지를 처리하고, 그것에 대한 몇 가지 속성을 업데이트하고, 특정 속성 (MsgIdentifier라고 부름)을 기반으로 상관 관계를 초기화하는 동안 메시지 상자로 보냅니다. 다른 오케스트레이션은이 메시지를 가져 와서 실제 처리를 수행합니다. 동일한 MsgIdentifier (사용자 지정 속성)가 포함 된 메시지 상자에 응답이 드롭되면이 오케스트레이션은이를 수집하여 원래의 요청자에게 다시 보냅니다.

메시지 상자에 요청을 보내는 보내기 셰이프에서 상관 관계가 초기화되고 다음 수신 셰이프는 동일한 상관 관계를 따르는 응답을 기다립니다. 즉, MsgIdentifier 속성에서 동일한 값을 갖는 응답을 기다립니다.

이 오케스트레이션은 외부 시스템과 BizTalk 응용 프로그램의 내부 동작 사이의 중개자라고 생각하십시오.

다시 말하지만, 모두 올바르게 작동하고 있으며 문제없이 올바른 메시지가 선택되고 있으며 이는 분석하려고하는 이상한 동작입니다. 응답을 감지, 소비 및 반환하기 때문에 응답을 사용하지 않는 메시지로 표시해서는 안됩니다.

+0

아. 상관 관계가 보냈다고 생각하지 않았습니다. 내가 다시 생각하게 해줘. –

0

여러 오케스트레이션에서 원본 메시지를 처리 ​​할 수 ​​있습니까? 이 경우 우리가 논의중인 오케스트레이션에 대한 응답을 위해 메시지 상자에 두 개의 메시지가 다시 입력 될 수 있습니다. 이 경우 첫 번째 메시지는 corrleation set에 의해 선택됩니다. 뒤에 오는 수신에 루핑 구조가 없기 때문에, 두번째 메시지는 갈 곳이 없을 것입니다 - 좀비.