다음을 통해 공유


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

    스크린샷은 5개의 메시지를 보내는 콘솔 앱 출력을 보여줍니다.

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

이 섹션에서는 Azure Event Grid를 사용하여 Service Bus 이벤트를 수신하는 Azure 논리 앱을 만듭니다.

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

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

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

    1. 소비>다중 테넌트 옵션을 선택한 다음 선택을 클릭합니다.

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

    3. 리소스 그룹을 입력합니다. 이전에 만든 Service Bus 네임스페이스 같은 다른 리소스에 사용한 리소스 그룹을 선택합니다.

    4. 논리 앱의 이름을 입력합니다.

    5. 논리 앱의 지역을 선택합니다.

    6. 검토 + 생성를 선택합니다.

      논리 앱 만들기 페이지를 보여 주는 스크린샷.

    7. 검토 + 만들기 페이지에서 만들기를 선택하여 논리 앱을 만듭니다.

  3. 배포 완료 페이지에서 리소스로 이동을 선택하여 논리 앱 페이지로 이동합니다.

Event Grid를 사용하여 Service Bus에서 메시지 수신 단계 추가

  1. 개발 도구를 확장하고 논리 앱 템플릿을 선택합니다.

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

  2. 빈 워크플로를 선택합니다. 논리 앱 디자이너가 열립니다.

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

    1. 트리거 추가를 선택한 다음 Event Grid를 검색합니다.

    2. 리소스 이벤트가 발생할 때를 선택합니다.

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

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

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

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

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

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

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

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

    4. 고급 매개 변수 아래에서 아래쪽 화살표를 선택합니다.

    5. 접미사 필터를 선택한 다음 드롭다운 목록 밖으로 포커스를 이동합니다.

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

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

      Service Bus 네임스페이스에 대한 연결 구성이 있는 Logic Apps 디자이너를 보여 주는 스크린샷

  7. 기호를 + 선택한 다음 , 작업 추가를 선택합니다.

    1. Service Bus를 검색합니다.

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

    2. 자세히 보기를 선택한 다음, 토픽 구독에서 메시지 가져오기(피킹 잠금)를 선택합니다.

      Logic Apps 디자이너에서 '토픽 구독에서 메시지 가져오기'가 선택된 스크린샷

    3. 아래 단계를 수행하세요.

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

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

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

      4. 새로 만들기를 선택합니다.

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

    4. 토픽 및 구독을 선택합니다.

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

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

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

foreach 루프 추가

  1. 기호를 + 선택한 다음 , 작업 추가를 선택합니다.

  2. 각 항목을 검색한 후 선택합니다.

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

  3. 이전 단계에서 출력을 선택하려면 번개를 선택하거나 입력 / 하고 동적 콘텐츠 삽입을 선택합니다.

  4. 항목 구독에서 메시지 가져오기(peek-lock)에서 본문을 선택합니다.

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

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. To의 경우 전자 메일 주소를 입력합니다.

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

    3. 본문에서 식을 선택하거나 /을 입력하고 식 삽입을 선택합니다.

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

      base64ToString(items('For_each')?['ContentData'])
      
    5. 추가를 선택합니다.

      전자 메일 보내기 활동의 본문에 대한 식을 보여 주는 스크린샷

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

  1. For Each 루프에서 +를 선택한 다음, 작업 추가를 선택합니다.

    1. Service Bus를 검색합니다.

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

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

    3. Service Bus 토픽을 선택하세요.

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

    5. 메시지의 잠금 토큰에서 식을 선택하거나 /에 '식 삽입'을 입력하고 선택합니다.

    6. 동적 콘텐츠를 선택하고 토큰 잠금을 선택합니다. 추가를 선택합니다.

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

  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. 이벤트 구독 페이지에서도 이벤트가 전달된 것을 확인할 수 있습니다. 이벤트 페이지에서 이벤트 구독을 선택하여 이 페이지로 이동할 수 있습니다.

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