자습서: 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. Azure Portal에서 논리 앱을 만듭니다.
    1. + 리소스 만들기를 선택하고 통합을 선택한 후 논리 앱을 선택합니다.
    2. Azure 구독을 선택합니다.
    3. 리소스 그룹에 대해 기존 항목 사용을 선택하고 다른 리소스(예: Azure 함수, Service Bus 네임스페이스)에 사용한 리소스 그룹을 선택합니다.
    4. 유형으로 소비를 선택합니다.
    5. 논리 앱의 이름을 입력합니다.
    6. 논리 앱의 지역을 선택합니다.
    7. 검토 + 만들기를 선택합니다.
    8. 검토 + 만들기 페이지에서 만들기를 선택하여 논리 앱을 만듭니다.
    9. 배포 완료 페이지에서 리소스로 이동을 선택합니다.
  2. Logic Apps 디자이너 페이지에서 템플릿 아래에 있는 비어 있는 논리 앱을 선택합니다.

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

  1. 디자이너에서 다음 단계를 수행합니다.
    1. Event Grid를 검색합니다.

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

      Logic Apps Designer - select Event Grid trigger를 입력합니다.

  2. 로그인을 선택하고 Azure 자격 증명을 입력한 후 액세스 허용을 선택합니다.
  3. 리소스 이벤트가 발생하는 경우 페이지에서 다음 단계를 수행합니다.
    1. Azure 구독을 선택합니다.

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

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

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

      Image showing the addition of a suffix filter.

    5. 접미사 필터에 대해 Service Bus 항목 구독의 이름을 입력합니다. Logic Apps Designer - configure event를 입력합니다.

  4. 디자이너에서 + 새 단계를 선택하고 다음 단계를 수행합니다.
    1. Service Bus를 검색합니다.

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

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

    4. 항목 구독에서 메시지 가져오기(보기 잠금) 를 선택합니다.

      Logic Apps Designer - get messages action를 입력합니다.

    5. 연결의 이름을 입력합니다. 예를 들면 다음과 같습니다. 항목 구독에서 메시지를 가져오고, Service Bus 네임스페이스를 선택합니다.

      Logic Apps Designer - select the Service Bus namespace를 입력합니다.

    6. RootManageSharedAccessKey를 선택한 다음, 만들기를 선택합니다.

      Logic Apps Designer - select the shared access key를 입력합니다.

    7. 항목구독을 선택합니다.

      Screenshot that shows where you select your topic and subscription.를 입력합니다.

수신된 메시지를 처리하고 완료하는 단계를 추가

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

foreach 루프 추가

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

  2. 컨트롤을 검색한 다음 선택합니다.

    Image showing selection of Control category

  3. 작업 목록에서 For each를 선택합니다.

    Image showing selection of For each control

  4. 이전 단계에서 출력 선택(필요하다면 텍스트 상자 내부 클릭) 시 주제 구독에서 메시지 가져오기(보기-잠금) 에서 본문을 선택합니다.

    Image showing the selection of input to For each

foreach 루프 내에 단계를 추가하여 메시지 본문과 함께 이메일 보내기

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

    Image showing the selection of add an action button inside the for each loop

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

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

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

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

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

    1. 대상에 이메일 주소를 입력합니다.

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

    3. 으로 전환합니다.

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

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

      Image showing the expression for Body of the Send an email activity.

foreach 루프 내 다른 작업을 추가하여 메시지를 완료

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

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

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

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

    4. 항목에 대한 구독을 선택합니다.

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

      Logic Apps Designer - complete the message를 입력합니다.

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

    Save logic app

앱 테스트

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

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

    Logic Apps Designer - logic app runs

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

    Logic app run details

  4. 논리 앱에서 수신한 각 메시지에 대해 이메일을 수신해야 합니다.

문제 해결

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

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

    Service Bus Topic page - incoming messages

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

    Active message count at the Service Bus subscription

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

    Events page - delivered events

  4. 이벤트 구독 페이지에서 이벤트가 전달된 것을 확인할 수도 있습니다. 이벤트 페이지에서 이벤트 구독을 선택하여 이 페이지로 이동할 수 있습니다.

    Event subscription page - delivered events

다음 단계