연습 - 이벤트 허브를 통해 메시지를 보내거나 받도록 애플리케이션 구성

완료됨

이제 이벤트 허브에 대한 게시자 및 소비자 애플리케이션을 구성할 준비가 되었습니다.

이 단원에서는 이벤트 허브를 통해 메시지를 보내거나 받도록 애플리케이션을 구성하겠습니다. 한 애플리케이션은 메시지 보낸 사람(SimpleSend) 역할을 하며, 다른 애플리케이션은 메시지 수신기(EventProcessorSample)로 작동합니다. 애플리케이션은 GitHub 리포지토리에 저장됩니다.

범용 표준 스토리지 계정 만들기

Java 수신기 애플리케이션은 스토리지 계정이 필요한 Azure Blob Storage에 메시지를 저장합니다. storage account create 명령을 사용하여 스토리지 계정(범용 V2)을 만듭니다. 이 명령에 대해 다음 매개 변수를 정의합니다.

매개 변수 설명
이름(필수) 스토리지 계정의 이름입니다.
resource-group(필수) 리소스 그룹 소유자는 이미 기본값으로 정의된 샌드박스 리소스 그룹입니다.
location(선택 사항) 지역이 이미 기본값으로 정의되어 있지만 기본 리소스 그룹 위치에서 다른 지역을 설정하려면 추가할 수 있습니다.
SKU (재고 관리 코드) 스토리지 계정의 기본 SKU 값은 Standard_RAGRS. 그러나 이 연습에서는 해당 값을 지정합니다.

이전 연습에서 리소스 그룹 및 위치에 대한 기본값을 정의했으므로 명령에서 매개 변수를 생략할 수 있습니다.

  1. Azure Cloud Shell에서 스토리지 계정 이름을 변수로 설정합니다. 스토리지 계정 이름은 Azure 내에서 고유해야 하며 3~24 개의 숫자나 소문자를 포함해야 합니다.

    STORAGE_NAME=storagename$RANDOM
    
  2. 다음 명령을 실행하여 스토리지 계정을 만듭니다.

    az storage account create --name $STORAGE_NAME --sku Standard_RAGRS --encryption-service blob
    

    이 스토리지 계정을 만드는 데 시간이 걸릴 수 있습니다. 스토리지 계정 만들기에 실패하면 환경 변수를 변경하고 다시 시도하세요.

  3. 다음 명령을 실행하여 스토리지 계정과 연결된 액세스 키를 가져옵니다.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. 스토리지 계정과 연결된 두 키가 JSON 형식으로 출력됩니다. 향후 사용을 위해 key1 값을 복사하고 저장합니다. 스토리지 계정에 액세스하려면 이 키가 필요합니다.

  5. 다음 명령을 실행하여 스토리지 계정에 대한 연결 문자열을 가져옵니다.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. 출력에는 스토리지 계정에 대한 연결 세부 정보가 포함됩니다. connectionString 값을 복사하고 저장합니다. 다음과 같이 표시됩니다.

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=xxxxxxxxxxx"
    
  7. 다음 명령을 실행하여 스토리지 계정에 메시지 라는 컨테이너를 만듭니다. 이전 단계에서 복사한 connectionString 값을 사용합니다.

    az storage container create --name messages --connection-string "<connection string here>"
    

이벤트 허브 GitHub 리포지토리 복제

이 단원에서 빌드하는 애플리케이션의 원본 파일은 GitHub 리포지토리에 있습니다.

  1. 컴퓨터에서 GitBash를 시작합니다.

  2. 다음 명령을 실행하여 Git 프로젝트 솔루션을 복제합니다.

    cd ~
    git clone https://github.com/Azure/azure-event-hubs.git
    
  3. 컴퓨터에서 VS Code를 시작합니다.

이벤트 허브에 이벤트를 보내는 SimpleSend.java 편집

이 연습에서는 VS Code(Visual Studio Code)를 사용하여 SimpleSend 애플리케이션을 수정합니다. Event Hubs 네임스페이스, 이벤트 허브 이름, 공유 액세스 정책 이름 및 기본 키를 추가해야 합니다.

  1. VS Code를 시작합니다.

  2. 파일 ->폴더 열기를 선택하고 c:/users/USERID/azure-event-hubs/samples/java/basic에서 SimpleSend 폴더를 선택합니다.

  3. 왼쪽 창의 코드 탐색기에서 src를 확장한 다음 SimpleSend.java 두 번 클릭하여 편집기에서 엽니다.

  4. 편집기의 `ConnectionStringBuilder``에서 다음 문자열을 찾아서 바꿉니다.

    • <EVENT HUBS NAMESPACE - CONNECTION STRING>에는 Event Hubs 네임스페이스에 대한 연결 문자열이 있습니다.
    • <EVENT HUB NAME>를 이벤트 허브 이름으로 바꿉니다.

    기본 SAS 키의 경우 Event Hubs 네임스페이스를 만들 때 RootManageSharedAccessKey 라는 256비트 SAS 키가 만들어지고 네임스페이스에 대한 보내기, 수신 대기 및 관리 권한을 부여하는 기본 및 보조 키가 포함됩니다. 이 연습의 앞부분에서는 Azure CLI 명령을 실행하여 키를 얻었습니다. 그러나 Azure Portal에서 Event Hubs 네임스페이스를 선택한 다음 설정 아래의 메뉴에서 공유 액세스 정책을 선택하여 키 및 연결 문자열을 찾을 수도 있습니다. 이제 정책 이름 RootManageSharedAccessKey 를 선택하여 SAS 정책 키를 표시합니다.

  5. SimpleSend.java 파일을 저장합니다.

Maven을 사용하여 SimpleSend.java 빌드

이제 mvn 명령을 실행하여 Java 애플리케이션을 빌드합니다.

  1. 코드 탐색기에서 SimpleSend.java 마우스 오른쪽 단추로 클릭하고 통합 터미널에서 열기를 선택합니다.

  2. 다음 명령을 입력하여 기본 SimpleSend 폴더로 이동합니다.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  3. Java SimpleSend 애플리케이션을 빌드합니다. 이 명령은 이벤트 허브에 대한 연결 세부 정보를 사용하여 애플리케이션을 빌드합니다.

    mvn clean package -DskipTests
    

    빌드 프로세스를 완료하는 데 몇 분이 걸릴 수 있습니다. 계속하기 전에 [INFO] 빌드 성공 메시지가 표시되는지 확인합니다.

    보낸 사람 애플리케이션에 대한 결과를 빌드합니다.

이벤트 허브에 이벤트를 수신하는 EventProcessorSample.java 편집

이제 이벤트 허브에서 데이터를 수집하도록 수신기 ( 구독자 또는 소비자라고도 함) 애플리케이션을 구성합니다.

수신기 애플리케이션의 경우 EventHubReceiverEventProcessorClient라는 두 가지 클래스를 사용할 수 있습니다. EventProcessorClient는 EventHubReceiver를 기반으로 빌드되지만 EventHubReceiver보다 더 간단한 프로그래밍 인터페이스를 제공합니다. EventProcessorClient는 동일한 스토리지 계정을 사용하여 EventProcessorClient의 여러 인스턴스에 메시지 파티션을 자동으로 배포할 수 있습니다.

이 절차에서는 EventProcessorClient 메서드를 사용합니다. EventProcessorSample 애플리케이션을 편집하여 다음 값을 추가합니다. Event Hubs 네임스페이스, 이벤트 허브 이름, 공유 액세스 정책 이름 및 기본 키, 스토리지 계정 이름, 연결 문자열 및 컨테이너 이름입니다.

  1. VS Code의 다른 인스턴스를 시작합니다.

  2. 파일 ->폴더 열기를 선택하고 c:/users/USERID/azure-event-hubs/samples/java/basic에서 EventProcessorSample 폴더를 선택합니다.

  3. 왼쪽 창의 코드 탐색기에서 src를 확장한 다음 EventProcessorSample.java 두 번 클릭하여 편집기에서 엽니다.

  4. 편집기에서 다음 문자열을 찾아서 바꿉니다.

    • <EVENT HUBS NAMESPACE - CONNECTION STRING> - Event Hubs 네임스페이스에 대한 연결 문자열입니다.
    • <EVENT HUB NAME> - 이벤트 허브의 이름입니다.
    • <AZURE STORAGE - CONNECTION STRING> - Azure Storage 계정에 대한 연결 문자열입니다.
    • Blob 컨테이너 이름이 messages인지 확인하십시오. 컨테이너에 다른 이름을 사용하는 경우 해당 이름을 사용합니다.
  5. EventProcessorSample.java 저장합니다.

Maven을 사용하여 EventProcessorSample.java 빌드

  1. 코드 탐색기에서 EventProcessorSample.java 마우스 오른쪽 단추로 클릭하고 통합 터미널에서 열기를 선택합니다.

  2. 다음 명령을 실행하여 기본 EventProcessorSample 폴더로 변경합니다.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  3. 다음 명령을 실행하여 Java SimpleSend 애플리케이션을 빌드하여 애플리케이션이 이벤트 허브에 대한 연결 세부 정보를 사용하는지 확인합니다.

    mvn clean package -DskipTests
    

    빌드 프로세스를 완료하는 데 몇 분이 걸릴 수 있습니다. 계속하기 전에 [INFO] BUILD SUCCESS 메시지가 표시되는지 확인합니다.

    수신기 애플리케이션에 대한 결과를 빌드합니다.

발신자 및 수신자 앱 시작

  1. 다음 명령을 실행하여 EventProcessorSample 애플리케이션을 시작합니다.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  2. 수신기 앱에서 다음 출력이 표시됩니다.

    Starting event processor
    Press enter to stop.
    
  3. 송신 애플리케이션(SimpleSend) 코드가 열려 있는 VS Code 창으로 전환합니다. 통합 터미널에서 다음 java 명령을 실행하고 .jar 패키지를 지정하여 명령줄에서 Java 애플리케이션을 실행합니다.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  4. 보내기 완료... 메시지가 표시되면 Enter 키 또는 Ctrl+C를 입력하여 애플리케이션을 중지합니다.

    jar-with-dependencies.jar
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    2018-09-18T19:42:15.146Z: Send Complete...
    
  5. 수신자 애플리케이션이 실행 중인 VS Code에서 메시지가 표시되는지 확인합니다. Enter 키를 누르거나 Ctrl+C를 눌러 프로그램을 종료합니다.

    ...
    Starting event processor
    Press enter to stop.
    Processing event from partition 0 with sequence number 1 with body: Message 0
    Processing event from partition 0 with sequence number 2 with body: Message 1
    Processing event from partition 0 with sequence number 3 with body: Message 2
    Processing event from partition 0 with sequence number 4 with body: Message 3
    Processing event from partition 0 with sequence number 5 with body: Message 4
    

요약

이 단원에서는 이벤트 허브에 메시지를 보낼 준비가 된 발신자 애플리케이션을 구성했습니다. 또한 이벤트 허브에서 메시지를 받을 수 있는 수신자 애플리케이션을 구성했습니다.