자습서: Azure Logic Apps를 사용하여 Azure Event Grid를 통해 수신된 Azure Service Bus 이벤트에 응답

이 자습서에서는 Azure Logic Apps를 사용하여 Azure Event Grid를 통해 수신되는 Azure Service Bus 이벤트에 응답하는 방법을 알아봅니다.

필수 조건

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

Service Bus 네임스페이스 만들기

이 자습서의 지침을 따릅니다. 빠른 시작: Azure Portal을 사용하여 Service Bus 토픽 및 토픽 에 대한 구독을 만들어 다음 작업을 수행합니다.

  • 프리미엄 Service Bus 네임스페이스를 만듭니다.
  • 연결 문자열 가져옵니다.
  • Service Bus 토픽을 만듭니다.
  • 항목에 대한 구독을 만듭니다. 이 자습서에서는 구독이 하나만 필요하므로 S2 및 S3 구독을 만들 필요가 없습니다.

Service Bus 토픽에 메시지 보내기

이 단계에서는 샘플 애플리케이션을 사용하여 이전 단계에서 만든 Service Bus 토픽으로 메시지를 보냅니다.

  1. GitHub azure-service-bus 리포지토리를 복제 하거나 zip 파일을 다운로드하고 해당 리포 지토리에서 파일을 추출합니다.

  2. Visual Studio에서 \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 폴더로 이동한 다음 SBEventGridIntegration.sln 파일을 엽니다.

  3. 솔루션 탐색기 창에서 MessageSender 프로젝트를 확장하고 Program.cs 선택합니다.

  4. <SERVICE BUS NAMESPACE - CONNECTION STRING>을 Service Bus 네임스페이스에 대한 연결 문자열로 바꾸고 <TOPIC NAME>을 토픽 이름으로 바꿉니다.

    const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>";
    const string TopicName = "<TOPIC NAME>";
    
  5. 프로그램을 빌드하고 실행하여 Service Bus 토픽에 5개 테스트 메시지(const int numberOfMessages = 5;)를 보냅니다.

    Console app output

Logic Apps를 사용하여 메시지 받기

이 단계에서는 Azure Event Grid를 통해 Service Bus 이벤트를 수신하는 Azure 논리 앱을 만듭니다.

  1. + 리소스 만들기를 선택하고 통합을 선택한 후 논리 앱을 선택합니다.

    Screenshot that shows the Create a resource -> Integration -> Logic app menu.

  2. 논리 앱 만들기 페이지에서 다음 단계를 수행합니다.

    1. Azure 구독을 선택합니다.
    2. 리소스 그룹에 기존리소스 사용을 선택하고 이전에 만든 다른 리소스(예: Azure 함수, Service Bus 네임스페이스)에 사용한 리소스 그룹을 선택합니다.
    3. 논리 앱의 이름을 입력합니다.
    4. 논리 앱의 지역을 선택합니다.
    5. 계획 유형에 대해 소비를 선택합니다.
    6. 검토 + 생성를 선택합니다. Screenshot that shows the Create a logic app page.
    7. 검토 + 만들기 페이지에서 만들기를 선택하여 논리 앱을 만듭니다.
  3. 배포 완료 페이지에서 리소스로 이동을 선택하여 논리 앱 페이지로 이동합니다.

  4. Logic Apps 디자이너 페이지의 템플릿 아래에서 빈 논리 앱을 선택합니다.

Event Grid를 통해 Service Bus에서 메시지 수신 단계 추가

  1. 논리 앱 페이지의 왼쪽 메뉴에서 논리 앱 디자이너를 선택합니다.

  2. 오른쪽 창의 템플릿 아래에서 빈 논리 앱을 선택합니다.

    Screenshot that shows the Logic app designer page with the Blank logic app option selected.

  3. 디자이너에서 다음 단계를 수행합니다.

    1. Event Grid를 검색합니다.

    2. 리소스 이벤트가 발생하는 경우 - Azure Event Grid를 선택합니다.

      Screenshot that shows the Logic Apps Designer with Event Grid trigger selected.

  4. 로그인을 선택합니다.

    Screenshot that shows the Logic Apps Designer with the Sign-in button selected.

  5. 계정 로그인 페이지에서 Azure에 로그인하는 데 사용할 계정을 선택합니다. 1.

  6. 리소스 이벤트가 발생하는 경우 페이지에서 다음 단계를 수행합니다.

    1. Azure 구독을 선택합니다.

    2. 리소스 종류에 대해 Microsoft.ServiceBus.Namespaces를 선택합니다.

    3. 리소스 이름에 대해 Service Bus 네임스페이스를 선택합니다.

    4. 새 매개 변수 추가를 선택하고 접미사 필터를 선택한 다음 포커스를 드롭다운 목록 외부로 이동합니다.

      Screenshot that shows adding of a new parameter of type Suffix filter.

    5. 접미사 필터의 경우 Service Bus 토픽 구독의 이름을 입력합니다.

      Screenshot that shows the Logic Apps Designer with connection configuration for the Service Bus namespace.

  7. 디자이너에서 + 새 단계를 선택하고 다음 단계를 수행합니다.

    1. Service Bus를 검색합니다.

    2. 목록에서 Service Bus를 선택합니다.

      Screenshot that shows the selection of Service Bus.

    3. 작업 목록에서 메시지 가져오기를 선택합니다.

    4. 토픽 구독에서 메시지 가져오기를 선택합니다 (peek-lock).

      Screenshot that shows the Logic Apps Designer with Get messages from a topic subscription selected.

    5. 다음 단계를 수행합니다.

      1. 연결이름을 입력합니다. 예: 토픽 구독에서 메시지를 가져옵니다.

      2. 인증 유형액세스 키로 설정되어 있는지 확인합니다.

      3. 연결 문자열의 경우 연결 문자열을 복사하여 이전에 저장한 Service Bus 네임스페이스에 붙여넣습니다.

      4. 만들기를 실행합니다.

        Screenshot that shows the Logic Apps Designer with the Service Bus connection string specified.

    6. 토픽구독선택합니다.

      Screenshot that shows the Logic Apps Designer with the Service Bus topic and subscription specified.

받은 메시지를 처리하고 완료하는 단계 추가

이 단계에서는 받은 메시지를 전자 메일로 보낸 다음, 메시지를 완료하는 단계를 추가합니다. 실제 시나리오에서는 메시지를 완료하기 전에 논리 앱에서 메시지를 처리합니다.

foreach 루프 추가

  1. + 새 단계를 선택합니다.

  2. Control을 검색한 다음 선택합니다.

    Screenshot that shows the Control category.

  3. 작업 목록에서 각각에 대해 선택합니다.

    Screenshot that shows the For-each operation selected.

  4. 이전 단계의 출력 선택(필요한 경우 텍스트 상자 내부 클릭)의 경우 토픽 구독에서 메시지 가져오기(피킹 잠금)에서 본문을 선택합니다.

    Screenshot that shows the selection of For each input.

foreach 루프 내에 단계를 추가하여 메시지 본문이 포함된 전자 메일 보내기

  1. For each 루프 내에서 작업 추가를 선택합니다.

    Screenshot that shows the selection of Add an action button in the For-each loop.

  2. 검색 커넥터 및 작업 텍스트 상자에 Office 365를 입력합니다.

  3. 검색 결과에서 Office 365 Outlook을 선택합니다.

    Screenshot that shows the selection of Office 365.

  4. 작업 목록에서 이메일 보내기(V2)를 선택합니다.

    Screenshot that shows the selection of Send an email operation.

  5. 로그인을 선택하고 단계에 따라 Office 365 Outlook에 대한 연결을 만듭니다.

  6. 이메일 보내기(V2) 창에서 다음 단계를 수행합니다.

  7. 본문의 텍스트 상자 내부를 선택하고 다음 단계를 수행합니다.

    1. To의 경우 전자 메일 주소를 입력합니다.

    2. 제목Service Bus 토픽 구독에서 받은 메시지를 입력합니다.

    3. 으로 전환합니다.

    4. 다음 식을 입력합니다.

      base64ToString(items('For_each')?['ContentData'])
      
    5. 확인을 선택합니다.

      Screenshot that shows the expression for Body of the Send an email activity.

foreach 루프에 다른 작업을 추가하여 메시지를 완료합니다.

  1. For each 루프 내에서 작업 추가를 선택합니다.

    1. 최근 목록에서 Service Bus를 선택합니다.

    2. 작업 목록에서 항목 구독의 메시지 완료를 선택합니다.

      Screenshot that shows the selection of Complete a message in a topic subscription.

    3. Service Bus 항목을 선택합니다.

    4. 토픽에 대한 구독 을 선택합니다.

    5. 메시지의 잠금 토큰에 대해 동적 콘텐츠에서 토큰 잠금을 선택합니다.

      Screenshot that shows the lock token field.

  2. Logic Apps 디자이너의 도구 모음에서 저장을 선택하여 논리 앱을 저장합니다.

    Screenshot that shows the Save button in the Logic app designed.

앱 테스트

  1. 테스트 메시지를 토픽에 아직 보내지 않은 경우 Service Bus 토픽으로 메시지 보내기 섹션의 지침에 따라 토픽 에 메시지를 보냅니다.

  2. 논리 앱의 개요 페이지로 전환한 다음 아래쪽 창의 실행 기록 탭으로 전환합니다. 논리 앱이 토픽에 전송된 메시지를 실행하는 것을 볼 수 있습니다. 논리 앱이 실행되기까지 몇 분 정도 걸릴 수 있습니다. 도구 모음에서 새로 고침을 선택하여 페이지를 새로 고칩니다.

    Screenshot that shows the Logic app run history.

  3. 세부 정보를 보려면 논리 앱 실행을 선택합니다. for 루프에서 5개 메시지를 처리했습니다.

    Screenshot that shows the details for the selected logic app run.

  4. 논리 앱이 받는 각 메시지에 대한 전자 메일을 받아야 합니다.

    Screenshot of Outlook with the messages received from the topics' subscription.

문제 해결

잠시 기다렸다가 새로 고침한 후 호출이 표시되지 않으면 다음 단계를 수행합니다.

  1. 메시지가 Service Bus 토픽에 도달했는지 확인합니다. Service Bus 토픽 페이지에서 들어오는 메시지 카운터를 참조하세요. 이 경우 MessageSender 애플리케이션을 한 번 실행했으므로 5개의 메시지가 표시됩니다.

    Screenshot that shows the Service Bus Topic page with incoming message count selected.

  2. Service Bus 구독에 활성 메시지가 없는지 확인합니다. 이 페이지에 이벤트가 표시되지 않으면 Service Bus 구독 페이지에 활성 메시지 수가 표시되지 않는지 확인합니다. 이 카운터의 수가 0보다 크면 어떤 이유로 구독의 메시지가 처리기 함수(이벤트 구독 처리기)로 전달되지 않습니다. 이벤트 구독을 올바르게 설정했는지 확인합니다.

    Screenshot that shows the Service Bus Subscription page with the active message count selected.

  3. Service Bus 네임스페이스의 이벤트 페이지에도 전달된 이벤트가 표시됩니다.

    Screenshot that shows the Events page of the Service Bus Namespace page.

  4. 이벤트 구독 페이지에서 이벤트가 배달되는 것을 볼 수도 있습니다. 이벤트 페이지에서 이벤트 구독을 선택하여 이 페이지에 연결할 수 있습니다.

    Screenshot that shows the Event Subscription page with the delivered event count selected.

다음 단계