다음을 통해 공유


자습서: Azure Functions를 사용하여 Azure Event Grid를 통해 받은 Azure Service Bus 이벤트에 응답

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

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • Service Bus 네임스페이스 만들기
  • 메시지를 전송하도록 예제 애플리케이션 준비
  • Service Bus 항목으로 메시지 보내기
  • Logic Apps를 사용하여 메시지 받기
  • Azure에서 테스트 함수 설정
  • Event Grid를 통해 함수와 네임스페이스 연결
  • Azure Functions를 사용하여 메시지 받기

필수 조건

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

    콘솔 앱 출력

추가 필수 조건

Visual Studio 2022를 설치하고 Azure 개발 워크로드를 포함시킵니다. 이 워크로드에는 Visual Studio에서 Azure Functions 프로젝트를 만들고 빌드하고 배포하는 데 필요한 Azure 함수 도구가 들어 있습니다.

함수 앱 배포

참고 항목

Azure Functions 앱을 만들고 배포하는 방법에 대한 자세한 내용은 Visual Studio를 사용하여 Azure Functions 개발을 참조하세요.

  1. SBEventGridIntegration.sln 솔루션의 FunctionApp1 프로젝트에서 ReceiveMessagesOnEvent.cs 파일을 엽니다.

  2. <SERVICE BUS NAMESPACE - CONNECTION STRING>을 Service Bus 네임스페이스에 대한 연결 문자열로 바꿉니다. 동일한 솔루션에서 MessageSender 프로젝트의 Program.cs 파일에서 사용한 것과 동일한 연결 문자열입니다.

  3. FunctionApp1을 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다.

  4. 게시 페이지에서 시작을 선택합니다. 이러한 단계가 개발자의 화면에 표시되는 내용과 다를 수 있지만 게시 프로세스는 비슷합니다.

  5. 게시 마법사의 대상 페이지에서 Azure대상으로 선택합니다.

  6. 특정 대상 페이지에서 Azure 함수 앱(Windows)을 선택합니다.

  7. Functions 인스턴스 페이지에서 새로 만들기를 선택합니다.

    Visual Studio - 게시 대화 상자의 함수 추가 단추를 보여 주는 스크린샷

  8. 함수 앱(Windows) 페이지에서 다음 단계를 수행합니다.

    1. 함수 앱의 이름을 입력합니다.
    2. Azure 구독을 선택합니다.
    3. 기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다. 이 자습서에서는 Service Bus 네임스페이스가 있는 리소스 그룹을 선택합니다.
    4. App Service의 플랜 유형을 선택합니다.
    5. 위치를 선택합니다. Service Bus 네임스페이스와 동일한 위치를 선택합니다.
    6. 기존 Azure Storage를 선택하거나 새로 만들기를 선택하여 Functions 앱에서 사용할 새 Storage 계정을 만듭니다.
    7. Application Insights의 경우 Azure 함수와 연결할 기존 Application Insights 인스턴스를 선택하거나 만듭니다.
    8. 만들기를 선택하여 Functions 앱을 만듭니다.
  9. 게시 마법사의 Functions 인스턴스 페이지로 돌아가서 마침을 선택합니다.

  10. Visual Studio의 게시 페이지에서 게시를 선택하여 Functions 앱을 Azure에 게시합니다.

  11. 출력 창에서 빌드 및 게시의 메시지를 살펴보고, 둘 다 성공했는지 확인합니다.

    인증 문제로 게시가 실패하는 경우 Azure Functions 앱에 대해 SCM 기본 인증 게시 옵션이 사용하도록 설정되어 있는지 확인합니다.

    사용하도록 설정된 SCM 기본 인증 게시 옵션을 보여 주는 스크린샷

  12. 이제 게시 페이지의 호스팅 섹션에서 ...를 선택합니다. (줄임표)를 선택하고 Azure Portal에서 열기를 선택합니다.

    Visual Studio의 게시 페이지를 보여 주는 스크린샷

  13. Azure Portal의 함수 앱 페이지에서 목록에서 EventGridTriggerFunction을 선택합니다. HTTP 트리거에 비해 몇 가지 이점이 있는 Event Grid 트리거를 Azure Functions에서 사용하는 것이 좋습니다. 자세한 내용은 Event Grid 이벤트에 대한 이벤트 처리기로서의 Azure 함수를 참조하세요.

    Event Grid 트리거 함수가 있는 함수 페이지를 보여 주는 스크린샷

  14. EventGridTriggerFunction함수 페이지에서 호출 탭으로 전환합니다.

    Event Grid 트리거 함수의 호출 페이지를 보여 주는 스크린샷

    웹 브라우저 탭에서 이 페이지를 열어 둡니다. 나중에 이 함수에 대한 호출을 확인하기 위해 이 페이지를 새로 고칠 것입니다.

Event Grid를 통해 함수와 Service Bus 네임스페이스 연결

이 섹션에서는 Azure Portal을 사용하여 함수와 Service Bus 네임스페이스를 연결합니다.

Azure Event Grid 구독을 만들려면 다음 단계를 수행합니다.

  1. Azure Portal에서 Service Bus 네임스페이스로 이동한 다음, 왼쪽 창에서 이벤트를 선택합니다. 오른쪽 창에 두 개의 Event Grid 구독이 표시되며 네임스페이스 창이 열립니다.

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

  2. 도구 모음에서 + 이벤트 구독을 선택합니다.

  3. 이벤트 구독 만들기 페이지에서 다음 단계를 수행합니다.

    1. 구독의 이름을 입력합니다.

    2. 시스템 항목이름을 입력합니다. 시스템 항목은 Azure Storage 계정 및 Azure Service Bus와 같은 Azure 리소스용으로 만들어진 항목입니다. 시스템 항목에 대해 자세히 알아보려면 시스템 항목 개요를 참조하세요.

    3. 엔드포인트 유형에 대한 Azure Function을 선택하고 엔드포인트 구성을 선택합니다.

      Service Bus 네임스페이스에 대한 이벤트 구독 만들기 페이지를 보여 주는 스크린샷

    4. Azure 함수 선택 페이지에서 구독, 리소스 그룹, 함수 앱, 슬롯 및 함수를 선택한 다음, 선택 항목 확인을 선택합니다.

      Azure 함수 엔드포인트의 선택을 보여 주는 스크린샷.

    5. 이벤트 구독 만들기 페이지에서 필터 탭으로 전환하고, 다음 작업을 수행합니다.

      1. 제목 필터링 사용을 선택합니다.

      2. 이전에 만든 Service Bus 토픽에 대한 구독의 이름을 입력합니다. 다음 스크린샷에서 구독의 이름은 .입니다 mysub.

      3. 생성 단추를 선택합니다.

        이벤트 구독의 필터 페이지를 보여 주는 스크린샷

  4. 이벤트 페이지의 이벤트 구독 탭으로 전환하고 목록에 이벤트 구독이 표시되는지 확인합니다.

    Service Bus 네임스페이스에 대한 이벤트 구독을 보여 주는 스크린샷

Functions 앱 모니터링

이전에 Service Bus 토픽으로 보낸 메시지는 구독(S1)에 전달됩니다. Event Grid는 구독의 메시지를 Azure 함수에 전달합니다. 자습서의 이 단계에서는 함수가 호출되었는지 확인하고 기록된 정보 메시지를 살펴봅니다.

  1. Azure 함수 앱의 페이지에서 아직 활성화되지 않은 경우 호출 탭으로 전환합니다. Service Bus 항목에 게시된 각 메시지에 대한 항목이 표시됩니다. 표시되지 않는 않으면 몇 분 정도 기다린 후 페이지를 새로 고칩니다.

    호출 후 함수의 호출 페이지를 보여 주는 스크린샷

  2. 세부 정보를 보려면 목록에서 호출을 선택합니다.

    함수 호출 세부 정보를 보여 주는 스크린샷.

    로그 탭을 사용하여 메시지가 전송되는 동안 로깅 정보를 볼 수도 있습니다. 약간의 지연이 있을 수 있으므로 기록된 메시지를 확인하는 데 몇 분 정도 걸립니다.

    Azure 함수에 대한 로그 탭을 보여주는 스크린샷.

문제 해결

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

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

    Service Bus 토픽 페이지 - 들어오는 메시지를 보여 주는 스크린샷.

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

    Service Bus 구독의 활성 메시지 수를 보여 주는 스크린샷

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

    배달된 이벤트 수를 보여 주는 스크린샷

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

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