다음을 통해 공유


Microsoft Azure 솔루션에 대한 수신기 응용 프로그램 작성

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

이 항목에서는 Microsoft Azure 서비스 버스에 게시되는 Microsoft Dynamics 365 메시지를 읽고 처리할 수 있는 Microsoft Azure 솔루션 수신기를 작성하는 방법에 대해 설명합니다. 전제 조건으로 Microsoft Dynamics 365 수신기의 세부 사항을 배우기 전에 Microsoft Azure 서비스 버스 수신기를 작성하는 방법에 익숙해 져야 합니다. 자세한 내용은 Azure 서비스 버스 설명서를 참조하십시오.

이 항목의 내용

큐 수신기 작성

단방향, 양방향 또는 REST 수신기 작성

메시지 필터링

여러 데이터 형식의 데이터 컨텍스트 읽기

큐 수신기 작성

메시지 는 서비스 버스 끝점에서 받은 메시지의 리포지토리입니다.큐 수신기는 이러한 큐에 대기 중인 메시지를 읽고 처리하는 응용 프로그램입니다. 서비스 버스 메시지는 큐에 저장되므로 수신기는 큐에서 받는 메시지를 위해 지속적으로 수신할 필요가 없습니다. 큐 수신기는 메시지가 큐에 도착한 후에 시작할 수 있으며 해당 메시지를 여전히 처리합니다. 다음 섹션에서 설명하는 다른 유형의 수신기는 지속적으로 수신해야 합니다. 그렇지 않으면 메시지를 읽을 수 있는 기회를 놓칩니다. 이러한 메시지는 Microsoft Dynamics 365 또는 다른 원본에서 만들어질 수 있습니다. .

중요

큐 수신기를 작성할 때 각 메시지 헤더 동작을 확인하여 Message가 Microsoft Dynamics 365에서 만들어진 것인지 판단합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 메시지 필터링을 참조하십시오.

ReceiveAndDelete 모드에서 Receive를 사용하여 소거식 메시지 읽기를 수행할 수 있습니다. 여기서 메시지를 읽고 큐에서 제거합니다. 또는 PeekLock 모드를 사용하여 비소거식 읽기를 수행하면 메시지를 읽지만 큐에서 계속 사용할 수 있습니다. 이 SDK에서 제공되는 영구 큐 수신기 샘플 코드는 소거식 읽기를 수행합니다. 큐에서 메시지 읽는 방법에 대한 자세한 내용은 큐에서 메시지를 받는 방법을 참조하십시오.

항목은 큐와 유사하지만 게시/구독 모델을 구현합니다. 하나 이상의 수신기는 항목을 구독하고 해당 큐에서 메시지를 받을 수 있습니다.추가 정보:큐, 항목 및 구독

중요

이러한 큐 또는 항목을 사용하려면 Azure SDK 버전 1.7 이상을 사용하여 수신기 응용 프로그램을 작성해야 합니다.

다중 시스템 소프트웨어 디자인에서 큐 및 항목을 사용하면 시스템이 분리될 수 있습니다. 수신기 응용 프로그램을 사용할 수 없게 되면 다시 온라인 상태가 되었을 때 Microsoft Dynamics 365에서 메시지 배달은 계속 수행되고 수신기 응용 프로그램은 큐 메시지를 계속 처리할 수 있습니다.추가 정보:큐, 항목 및 구독

단방향, 양방향 또는 REST 수신기 작성

앞에서 설명한 큐 수신기 외에도 Microsoft Dynamics 365에서 지원되는 세 가지 다른 서비스 버스 계약인 단방향, 양방향 및 REST에 대한 수신기를 작성할 수 있습니다. 단방향 수신기는 서비스 버스에 게시된 메시지를 읽고 처리할 수 있습니다. 양방향 수신기는 동일한 작업을 수행할 수 있지만 일부 정보의 문자열이 다시Dynamics 365으로 반환될 수 있습니다.REST 수신기는 REST 끝점을 사용하는 점을 제외하면 양방향 수신기와 동일합니다. 이러한 수신기는 서비스 버스를 통해 전송된 메시지를 읽으려면 서비스 끝점에서 지속적으로 수신해야 합니다.Microsoft Dynamics 365에서 메시지를 서비스 버스에 게시하려고 할 때 수신기가 수신하지 않으면 메시지를 보내지 않습니다.

수신기 작성은 ABC(주소, 바인딩 및 계약)으 구조화되어 있습니다. 다음 정보는 단방향 수신기의 ABC를 식별합니다.

수신기가 끝점으로 등록되면 Microsoft Dynamics 365에서 메시지가 서비스 버스에 게시될 때마다 수신기의 Execute 메서드가 호출됩니다.Execute 메서드는 메서드 호출에서 데이터를 반환하지 않습니다. 자세한 내용은 단방향 수신기 샘플 샘플: 단방향 수신기를 참조하십시오.

양방향 수신기는 단방향 수신기와 유사한 방식으로 코딩됩니다. 양방향 수신기의 ABC는 다음과 같습니다.

이 양방향 계약의 경우, 실행 메서드는 메서드 호출에서 문자열을 반환합니다. 자세한 내용은 양방향 수신기 샘플 샘플: 양방향 수신기를 참조하십시오.

REST 수신기는 양방향 수신기와 유사한 방식으로 코딩됩니다.REST 수신기의 ABC는 다음과 같습니다.

REST 계약에서 Execute 메서드는 메서드 호출에서 문자열을 반환합니다. 자세한 내용은 REST 수신기 샘플 샘플: REST 수신기를 참조하십시오.REST 수신기 샘플에서는 양방향 샘플에서처럼 ServiceHost가 아니라 WebServiceHost가 인스턴스화됩니다.

참고

양방향 또는 REST 수신기에서 기본 제공(ServiceBusPlugin) 플러그 인을 사용할 경우 플러그 인은 수신기에서 반환된 문자열 데이터를 사용하지 않습니다. 하지만 사용자 지정 Azure 인식 플러그 인은 이 정보를 사용할 수 있습니다.

수신기 샘플을 실행할 때 사용자에게 묻는 발급자 암호는 Microsoft Azure 서비스 버스 관리 키입니다. WS2007 Federation HTTP 바인딩은 “토큰” 모드 및 WS-Trust 1.3 프로토콜을 사용합니다.

메시지 필터링

Microsoft Dynamics 365 및 Dynamics 365(온라인)에서 보낸 각 중개 메시지 속성 속성에 추가된 추가 정보의 속성 모음이 있습니다. 영구 큐, 릴레이, 항목 계약 끝점에 사용할 수 있는 속성 모음에는 다음 정보가 들어 있습니다.

  • 조직 URI

  • 발신자 ID

  • 시작 사용자 ID

  • 엔터티 논리 이름

  • 요청 이름

서비스 버스 메시지가 게시되는 Microsoft Dynamics 365에서 처리되는 이 정보는 조직, 사용자, 엔터티 및 메시지 요청을 식별합니다. 이러한 속성에 대한 가용성은 Microsoft Dynamics 365에서 보낸 Message에 표시됩니다. 수신기 코드는 이러한 값을 바탕으로 Message 처리 방법을 결정할 수 있습니다.

여러 데이터 형식의 데이터 컨텍스트 읽기

현재 Microsoft Dynamics 365 작업에서의 데이터 컨텍스트는 서비스 버스 Message 본문의 Azure 솔루션 수신기 응용 프로그램으로 전달됩니다. 이전 릴리스에서는 .NET 바이너리 형식만 지원되었습니다. 교차 플랫폼(비.NET) 상호 운용성을 위해, 이제 Message 본문에 .NET 바이너리, JSON, XML 세 가지 데이터 형식 중 하나를 지정할 수 있습니다. 이 형식은 ServiceEndpoint 엔터티의 MessageFormat 특성에 지정됩니다.

참고

이 기능은 CRM Online 2016 업데이트 1 및 CRM 2016 서비스 팩 1(온-프레미스)에서 소개되었습니다.

메시지를 받을 때, 수신기 응용 프로그램이 메시지의 콘텐츠 유형에 따라 메시지 본문의 데이터 컨텍스트를 읽을 수 있습니다. 이렇게 수행할 샘플 코드는 아래와 같습니다.

var receivedMessage = inboundQueueClient.Receive(TimeSpan.MaxValue);

if (receivedMessage.ContentType = "application/msbin1")
{
    RemoteExecutionContext context = receivedMessage.GetBody<RemoteExecutionContext>();
}
else if (receivedMessage.ContentType = "application/json")
{
    //string jsonBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    RemoteExecutionContext contextFromJSON = receivedMessage.GetBody<RemoteExecutionContext>(
        new DataContractJsonSerializer(typeof(RemoteExecutionContext)));
}
else if (receivedMessage.ContentType = "application/xml")
{
    //string xmlBody = new StreamReader(receivedMessage.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
    RemoteExecutionContext contextFromXML = receivedMessage.GetBody<RemoteExecutionContext>(
        new DataContractSerializer(typeof(RemoteExecutionContext)));
}

참고 항목

Microsoft Dynamics 365에 대한 Azure 확장
사용자 지정 Azure 인식 플러그 인 작성
샘플: 영구 큐 수신기
샘플: 단방향 수신기
샘플: 양방향 수신기
샘플: REST 수신기
Azure 솔루션에서 Dynamics 365 데이터로 작업
Azure 이벤트 허브 솔루션의 Dynamics 365 이벤트 데이터로 작업

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보