문제

런타임에 현재 코드가 실행되는 몇 가지 가능한 호스트 프로세스 중 어느 것을 알고 싶습니다. 호스트 프로세스에는 Biztalk 관리 수준에서 이름이 구성되었지만 코드 내부에서 어떤 프로세스에 어떤 프로세스가 있는지 알아야합니다.

나는 이것을 할 수있는 지원 방법을 찾지 못했고 심지어 지원되지 않는 방법을 찾는 데 갇혀 있습니다 :-)

편집 : 답변 해 주신 Tomasr에게 감사드립니다. 주로 로깅/추적 목적으로 필요합니다. ODE가 실행중인 호스트를 표시 할뿐만 아니라 적절한 추적 레벨을 결정합니다.

그것은 또한 라이브러리 수준에서 이것을 깊이 필요로하고 빠르야한다는 것을 의미합니다. 예를 들어 코드가 실행되는 최상위 성분 (오케스트레이션, 파이프 라인 등)을 찾기 위해 전화 스택을 얻을 수 없습니다.

반면에 나는 싱글 톤 생성자에서 한 번만 알아낼 수있었습니다. 그것은 appdomain 당 한 번 호출되므로 물건을 찾는 데 약간의 시간이 걸릴 수 있습니다. 그러나 나는 아마도 의미있는 콜 스택이 없을 것입니다. 그래서 우리는 정사각형으로 돌아 왔습니다 :-/

edit2 : Biztalk Management DB에는 필요한 정보가 포함되어야합니다. 이 호스트 프로세스의 프로세스 ID에 어떤 서버에서 어떤 호스트가 시작되었는지 알고 있습니다. 누군가 내가 그곳을보기 시작할 수있는 포인터가 있다면 저도 도움이 될 것입니다.

도움이 되었습니까?

해결책

내가 아는 한, "간단한"방법은 없습니다. 해당 정보를 얻는 방법 중 하나 (다소 거꾸로)는 ExplorEROM API를 사용하여 관리 구성 데이터를 쿼리하고 실행중인 위치 및 실행중인 호스트/핸들러를 파악하는 것입니다.

예를 들어, PipelInecomponent 에서이 작업을 수행하는 경우 메시지 컨텍스트에서 포트 이름을 찾은 다음 ExplorEROM을 사용하여 찾을 수 있습니다. 그런 다음이를 사용하여 어댑터와 관련된 핸들러를 쿼리하고 호스트 이름을 얻습니다. 오케스트레이션과 비슷한 것이지만 전체 오케스트레이션 이름을 찾을 것입니다.

호기심으로 인해이 정보가 필요한 이유는 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top