자습서: 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;)를 보냅니다.

    콘솔 앱 출력

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

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

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

    리소스 만들기 -> 통합 -> 논리 앱 메뉴를 보여 주는 스크린샷.

  2. 논리 앱 만들기 페이지에서 다음 단계를 따릅니다.

    1. Azure 구독을 선택합니다.
    2. 리소스 그룹에 대해 기존 항목 사용을 선택하고 다른 리소스(예: Azure 함수, Service Bus 네임스페이스)에 사용한 리소스 그룹을 선택합니다.
    3. 논리 앱의 이름을 입력합니다.
    4. 논리 앱의 지역을 선택합니다.
    5. 플랜 유형에서 소비를 선택합니다.
    6. 검토 + 생성를 선택합니다. 논리 앱 만들기 페이지를 보여 주는 스크린샷.
    7. 검토 + 만들기 페이지에서 만들기를 선택하여 논리 앱을 만듭니다.
  3. 배포 완료 페이지에서 리소스로 이동을 선택하여 논리 앱 페이지로 이동합니다.

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

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

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

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

    빈 논리 앱 옵션이 선택된 논리 앱 디자이너 페이지를 보여 주는 스크린샷.

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

    1. Event Grid를 검색합니다.

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

      Event Grid 트리거가 선택된 Logic Apps 디자이너를 보여 주는 스크린샷.

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

    로그인 단추가 선택된 Logic Apps 디자이너를 보여 주는 스크린샷.

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

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

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

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

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

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

      접미사 필터 형식의 새 매개 변수 추가를 보여 주는 스크린샷.

    5. 접미사 필터에 대해 Service Bus 항목 구독의 이름을 입력합니다.

      Service Bus 네임스페이스에 대한 연결 구성이 포함된 Logic Apps Designer를 보여 주는 스크린샷.

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

    1. Service Bus를 검색합니다.

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

      Service Bus 선택을 보여 주는 스크린샷.

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

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

      토픽 구독에서 메시지 가져오기가 선택된 Logic Apps Designer를 보여 주는 스크린샷.

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

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

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

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

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

        Service Bus 연결 문자열이 지정된 Logic Apps Designer를 보여 주는 스크린샷.

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

      Service Bus 토픽 및 구독이 지정된 Logic Apps Designer를 보여 주는 스크린샷.

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

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

foreach 루프 추가

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

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

    컨트롤 범주를 보여 주는 스크린샷.

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

    선택된 For-each 작업을 보여 주는 스크린샷.

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

    각 입력에 대한 선택을 보여 주는 스크린샷.

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

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

    For-each 루프에서 작업 단추 추가 선택을 보여 주는 스크린샷.

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

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

    Office 365 선택을 보여 주는 스크린샷.

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

    이메일 보내기 작업 선택을 보여 주는 스크린샷.

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

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

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

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

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

    3. 으로 전환합니다.

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

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

      이메일 보내기 작업의 본문 식을 보여 주는 스크린샷.

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

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

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

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

      토픽 구독에서 메시지 완료 선택을 보여 주는 스크린샷.

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

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

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

      잠금 토큰 필드를 보여 주는 스크린샷.

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

    설계된 논리 앱의 저장 단추를 보여 주는 스크린샷.

앱 테스트

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

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

    논리 앱 실행 기록을 보여 주는 스크린샷.

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

    선택한 논리 앱 실행에 대한 세부 정보를 보여 주는 스크린샷.

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

    토픽 구독에서 받은 메시지가 포함된 Outlook 스크린샷.

문제 해결

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

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

    들어오는 메시지 수가 선택된 Service Bus 토픽 페이지를 보여 주는 스크린샷.

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

    활성 메시지 수가 선택된 Service Bus 구독 페이지를 보여 주는 스크린샷.

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

    Service Bus 네임스페이스 페이지의 이벤트 페이지를 보여 주는 스크린샷.

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

    배달된 이벤트 수가 선택된 이벤트 구독 페이지를 보여 주는 스크린샷.

다음 단계