연습 - Pub/Sub를 사용하여 이벤트 게시 및 구독

완료됨

소매 애플리케이션에서 재고 및 배송 부서에서 빌드한 소프트웨어는 일반적인 워크플로의 일부로 서로의 이벤트에 응답해야 합니다. 예를 들어 재고 마이크로 서비스는 주문이 배송되면 재고에서 항목을 제외해야 합니다.

이 연습에서는 여러 콘솔 창을 사용하여 Azure Cache for Redis 인스턴스에서 Pub/Sub를 구현합니다.

두 개의 브라우저 인스턴스에서 Azure Cache for Redis 콘솔 열기

두 개의 고유한 브라우저 인스턴스를 사용하여 메시지를 보내고 받는 두 개의 별도 클라이언트를 관찰합니다. 각 브라우저 인스턴스에는 실시간 Pub/Sub 기능을 설명하는 데 도움이 되는 Redis 콘솔이 있습니다.

첫 번째 브라우저 인스턴스 열기

  1. 샌드박스를 활성화하는 데 사용한 것과 동일한 계정을 사용하여 Azure Portal에 로그인합니다.

  2. Azure 서비스 범주 내에서 추가 서비스를 선택하고, 데이터베이스 범주를 선택한 다음, Azure Cache for Redis를 선택합니다.

  3. 이전 연습에서 만든 Azure Cache for Redis 인스턴스를 선택합니다.

    Screenshot of the Azure Cache for Redis resource list.

  4. 리소스 창에서 콘솔을 선택하여 Redis 콘솔을 엽니다.

    Screenshot of the Console option in the resource pane.

  5. 이 연습에서 후속 태스크를 완료하려면 콘솔을 열어 둡니다.

두 번째 브라우저 인스턴스 열기

  1. 샌드박스를 활성화하는 데 사용한 것과 동일한 계정과 별도의 브라우저 창이나 탭을 사용하여 Azure Portal에 로그인합니다.

  2. Azure 서비스 범주 내에서 추가 서비스를 선택하고, 데이터베이스 범주를 선택한 다음, Azure Cache for Redis를 선택합니다.

  3. 이전 연습에서 만든 Azure Cache for Redis 인스턴스를 선택합니다.

  4. 리소스 창에서 콘솔을 선택하여 Redis 콘솔을 엽니다.

  5. 이 연습에서 후속 태스크를 완료하려면 콘솔을 열어 둡니다.

  6. 이때 Redis 콘솔의 각 인스턴스와 함께 각각 두 개의 브라우저 인스턴스가 열려 있어야 합니다.

    Screenshot of two instances of Azure Cache for Redis console running.

    운영 체제에서 지원하는 경우 브라우저 창을 나란히 도킹하여 이 연습의 나머지 부분을 간소화하는 것이 좋습니다.

알려진 채널에 메시지 구독 및 게시

SUBSCRIBE 명령을 사용하여 채널을 구독한 다음, PUBLISH 명령을 사용하여 메시지를 게시합니다.

  1. 첫 번째 브라우저 인스턴스의 콘솔에서 다음 작업을 수행합니다.

    1. 다음 명령을 입력하고 ENTER 키를 사용하여 org.shipping.alerts 채널에서 메시지 수신 대기를 시작합니다.

      SUBSCRIBE org.shipping.alerts
      
    2. 이제 org.shipping.alerts 채널에서 수신 대기 중임을 나타내는 콘솔의 응답을 관찰합니다.

      Reading messages... (press ENTER to quit)
      1) "subscribe"
      2) "org.shipping.alerts"
      3) (integer) 1
      
  2. 두 번째 브라우저 인스턴스의 콘솔에서 다음 작업을 수행합니다.

    1. 다음 명령을 입력하고 ENTER 키를 사용하여 콘텐츠 labelprint-sdf9878이 포함된 새 메시지를 org.shipping.alerts 채널로 보냅니다.

      PUBLISH org.shipping.alerts labelprint-sdf9878
      
    2. 다음 명령을 입력하고 ENTER 키를 사용하여 콘텐츠 labelprint-sdf9878이 포함된 새 메시지를 org.shipping.alerts 채널로 보냅니다.

      PUBLISH org.shipping.alerts packagesent-sdf9878
      
  3. 다시, 첫 번째 브라우저 인스턴스의 콘솔에서 다음 작업을 수행합니다.

    1. org.shipping.alerts 채널에서 새 메시지를 수신했음을 나타내는 콘솔의 첫 번째 응답을 관찰합니다.

      1) "message"
      2) "org.shipping.alerts"
      3) "labelprint-sdf9878"
      
    2. org.shipping.alerts 채널에서 새 메시지를 수신했음을 나타내는 콘솔의 두 번째 응답을 관찰합니다.

      1) "message"
      2) "org.shipping.alerts"
      3) "packagesent-sdf9878"
      

      Screenshot of the Redis console pair running PUBLISH and SUBSCRIBE commands

    3. ENTER 키를 사용하여 콘솔이 이벤트를 수신 대기하지 못하도록 합니다.

    4. 다음 명령을 입력하고 ENTER 키를 사용하여 콘솔 출력을 지웁니다.

      clear
      
  4. 다시 두 번째 브라우저 인스턴스의 콘솔에서 다음 작업을 수행합니다.

    1. 다음 명령을 입력하고 ENTER 키를 사용하여 콘솔 출력을 지웁니다.

      clear
      

채널 패턴 구독 및 메시지 수신 대기

PSUBSCRIBE 명령을 사용하여 채널 패턴을 구독한 다음, PUBLISH 명령을 사용하여 메시지를 게시합니다.

  1. 첫 번째 브라우저 인스턴스의 콘솔에서 다음 작업을 수행합니다.

    1. 다음 명령을 입력하고 ENTER 키를 사용하여 org.shipping.alerts 채널에서 메시지 수신 대기를 시작합니다.

      PSUBSCRIBE org.inventory.*
      
    2. 이제 org.inventory.* 채널 패턴에서 수신 대기 중임을 나타내는 콘솔의 응답을 관찰합니다.

      Reading messages... (press ENTER to quit)
      1) "psubscribe"
      2) "org.inventory.*"
      3) (integer) 1
      
  2. 두 번째 브라우저 인스턴스의 콘솔에서 다음 작업을 수행합니다.

    1. 다음 명령을 입력하고 ENTER 키를 사용하여 콘텐츠 item-sku-318947이 포함된 새 메시지를 org.inventory.empty 채널로 보냅니다.

      PUBLISH org.inventory.empty item-sku-318947
      
    2. 다음 명령을 입력하고 ENTER 키를 사용하여 콘텐츠 order-dsy3821이 포함된 새 메시지를 org.shipping.sent 채널로 보냅니다.

      PUBLISH org.shipping.sent order-dsy3821
      

      참고

      이 채널이 org.inventory.* 패턴과 일치하지 않으므로 이 명령이 다른 클라이언트가 받을 메시지를 보낼 것으로 예상해서는 안 됩니다.

  3. 다시, 첫 번째 브라우저 인스턴스의 콘솔에서 다음 작업을 수행합니다.

    1. org.inventory.* 채널 패턴을 사용하여 단일 새 메시지만 수신했음을 나타내는 콘솔의 응답을 관찰합니다.

      1) "pmessage"
      2) "org.inventory.*"
      3) "org.inventory.empty"
      4) "item-sku-318947"
      

      Screenshot of the Redis console pair running PUBLISH and PSUBSCRIBE commands

    2. ENTER 키를 사용하여 콘솔이 이벤트를 수신 대기하지 못하도록 합니다.