다음을 통해 공유


호출된 오케스트레이션에서 수신 등록을 만드는 방법

케스트레이션을 시작할 때 오케스트레이션 시작 셰이프를 통해 메시지를 매개 변수로 전달할 수 있지만 일부 시나리오에서는 호출자 오케스트레이션에서 호출된 오케스트레이션으로 메시지를 보낼 수 있습니다. 예를 들어 호출 시 전달할 메시지를 모르거나 다른 오케스트레이션에서 동적으로 호출된 오케스트레이션에 메시지를 보내야 할 수도 있습니다.

호출된 오케스트레이션으로 메시지를 보내는 방법은 상관 관계를 전달하여 호출된 오케스트레이션이 상관 관계를 통해 정의되는 등록을 만들고 이 등록을 사용하여 메시지를 받을 수 있도록 하는 것입니다. 그러나 단순히 상관 관계만 전달한 후 호출된 오케스트레이션이 상관 관계를 기반으로 등록을 만들고 해당 등록에서 메시지를 받을 것을 예상할 수는 없습니다. 이 방법을 사용하는 경우 호출자 오케스트레이션에서 호출된 오케스트레이션으로 보내는 메시지는 "구독자를 찾을 수 없어 게시된 메시지를 라우팅할 수 없습니다."라는 오류가 발생합니다. 이는 다음과 같은 이유로 인해 수행됩니다.

  • 호출된 오케스트레이션에서 경합 상태가 발생합니다.

  • 호출된 오케스트레이션이 메시지를 받을 수 있도록 라우팅하기 위해 등록을 MessageBox 데이터베이스로 보낼 커밋 지점이 없습니다.

    이 문제를 해결하는 한 가지 방법은 다음 단계를 수행하는 것입니다.

  1. 호출자 오케스트레이션에 메시지를 받을 활성화 수신이 있습니다. 호출자 오케스트레이션에서 메시지를 받은 후 상관 관계 집합을 초기화한 다음, 상관 관계 집합 및 자체 상관 관계 수신 직접 바인딩된 포트를 시작 오케스트레이션 셰이프를 통해 전달합니다. 전달하는 포트는 호출된 오케스트레이션의 송신 포트가 되고 이 포트를 사용하여 메시지를 다시 보내 호출자 오케스트레이션과 동기화합니다.

  2. 호출된 오케스트레이션에서 상관 관계 자동 연결 포트를 통해 메시지를 다시 호출자 오케스트레이션으로 보냅니다. 이렇게 하면 호출자 오케스트레이션과 동기화되어 경합 상태가 방지되고 호출된 오케스트레이션에서의 라우팅을 위해 MessageBox에 대한 수신 등록을 만드는 동안 커밋 지점이 제공됩니다.

  3. 호출자 오케스트레이션은 상관 관계 자동 연결 포트를 통해 메시지를 받고 호출된 오케스트레이션과 동기화합니다. 상관 관계 자동 연결 포트 수신에는 상관 관계 후속 작업이 필요하지 않습니다. 이제 호출자 오케스트레이션에서 호출된 오케스트레이션으로 안전하게 메시지를 보낼 수 있으며 호출된 오케스트레이션은 상관 관계를 기반으로 메시지를 받습니다.

    앞의 방법으로 원하는 작업을 수행할 수 있지만 더 나은 방법은 수신에 사용할 상관 관계를 초기화하는 메시지를 전달하는 것입니다. 상관 관계 자동 연결 포트를 통해 호출자 오케스트레이션을 호출된 오케스트레이션과 동기화하는 경우 항상 상관 관계 초기화에 필요한 메시지를 전달하는 것이 좋습니다. 다음 단계에서는 가장 안정적이고 성능이 뛰어난 방법을 제공합니다.

  4. 호출자 오케스트레이션에 메시지를 받을 활성화 수신이 있습니다. 메시지를 받은 후 시작 오케스트레이션 셰이프를 통해 메시지와 자체 상관 관계가 있는 직접 바인딩된 포트를 전달합니다. 전달하는 메시지는 호출된 오케스트레이션의 상관 관계를 초기화하는 데 사용됩니다. 전달하는 포트는 호출된 오케스트레이션의 송신 포트가 되고 이 포트를 사용하여 메시지를 다시 보내 호출자 오케스트레이션과 동기화합니다.

  5. 호출된 오케스트레이션에서 상관 관계를 초기화하고 메시지를 다시 호출자 오케스트레이션으로 보냅니다. 이렇게 하면 호출자 오케스트레이션과 동기화되어 경합 상태가 방지되고 호출된 오케스트레이션에서의 라우팅을 위해 MessageBox에 대한 수신 등록을 만드는 동안 커밋 지점이 제공됩니다.

  6. 호출자 오케스트레이션은 상관 관계 자동 연결 포트를 통해 메시지를 받고 호출된 오케스트레이션과 동기화합니다. 상관 관계 자동 연결 포트 수신에는 상관 관계 후속 작업이 필요하지 않습니다. 이제 호출자 오케스트레이션에서 호출된 오케스트레이션으로 안전하게 메시지를 보낼 수 있으며 호출된 오케스트레이션은 상관 관계를 기반으로 메시지를 받습니다.

참고 항목

오케스트레이션에서 상관 관계 사용
상관 관계 자동 연결 직접 바인딩 포트 사용 방법