서버 전송 이벤트에 대한 API 구성
적용 대상: 개발자 | 기본 | 기본 v2 | 표준 | 표준 v2 | 프리미엄 | 프리미엄 v2
이 문서에서는 SSE(서버 전송 이벤트)를 구현하는 API Management에서 API를 구성하기 위한 지침을 제공합니다. SSE는 클라이언트가 연결을 설정한 후 HTTP를 통해 클라이언트에 데이터를 자동으로 스트리밍(푸시)하기 위한 HTML5 EventSource
표준을 기반으로 합니다.
팁
API Management는 또한 WebSocket API에 대한 네이티브 지원을 제공하여 클라이언트와 서버 간에 단일하고 영구적인 양방향 연결을 유지합니다.
필수 조건
- 기존 API Management 인스턴스. 구독이 아직 없다면 하나를 만듭니다.
- SSE를 구현하는 API입니다. 지원되는 가져오기 방법 중 하나를 사용하여 API를 API Management 인스턴스로 가져오고 게시합니다.
SSE에 대한 지침
SSE를 구현하는 백 엔드 API에 도달하기 위해 API Management를 사용할 때 다음 지침을 따릅니다.
장기 실행 HTTP 연결을 위한 서비스 계층 선택 - SSE는 특정 API Management 가격 책정 계층에서 지원되는 장기 실행 HTTP 연결에 의존합니다. 장기 실행 연결은 클래식 및 v2 API Management 계층에서 지원되지만 사용량 계층에서는 지원되지 않습니다.
유휴 연결 유지 - 클라이언트와 백 엔드 간의 연결이 4분 이상 유휴 상태일 수 있는 경우 연결을 활성 상태로 유지하는 메커니즘을 구현합니다. 예를 들어, 연결 백 엔드에서 TCP keepalive 신호를 사용하도록 설정하거나 4분에 한 번 이상 클라이언트 쪽에서 트래픽을 보냅니다.
이 구성은 API Management 인프라에서 사용되는 Azure Load Balancer에 의해 적용되는 4분의 유휴 세션 제한 시간을 재정의하는 데 필요합니다.
클라이언트에 즉시 이벤트 전달 - 이벤트가 즉시 클라이언트에 전달되도록
forward-request
정책에서 응답 버퍼링을 끕니다. 예시:<forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
응답을 버퍼링하는 다른 정책 피하기 -
validate-content
와 같은 특정 정책은 응답 콘텐츠를 버퍼링할 수도 있으므로 SSE를 구현하는 API와 함께 사용하면 안 됩니다.Azure Monitor, Application Insights 및 Event Hubs에 대한 로깅 요청/응답 본문 방지 - 진단 설정을 사용하여 Azure Monitor 또는 Application Insights에 대한 API 요청 로깅을 구성할 수 있습니다. 진단 설정을 사용하면 요청 실행의 다양한 단계에서 요청/응답 본문을 기록할 수 있습니다. SSE를 구현하는 API의 경우 예기치 않은 버퍼링이 발생할 수 있으며 이로 인해 문제가 발생할 수 있습니다. 전역/모든 API 범위에서 구성된 Azure Monitor 및 Application Insights에 대한 진단 설정은 서비스의 모든 API에 적용됩니다. 필요에 따라 개별 API에 대한 설정을 재정의할 수 있습니다. Event Hubs에 로깅할 때는 log-to-eventhubs를 사용하여 요청/응답 로깅에 대한 컨텍스트 정보의 범위와 양을 구성합니다. SSE를 구현하는 API의 경우 Azure Monitor, Application Insights 및 Event Hubs에 대한 요청/응답 본문 로깅을 사용하지 않도록 설정해야 합니다.
응답 캐싱 사용 안 함 - 클라이언트에 대한 알림이 시기적절하게 전달되도록 하려면 응답 캐싱이 사용하도록 설정되어 있지 않은지 확인합니다. 자세한 내용은 API Management 캐싱 정책을 참조하세요.
부하 상태에서 API 테스트 - 일반적인 방법에 따라 부하 상태에서 API를 테스트하여 프로덕션에 들어가기 전에 성능 또는 구성 문제를 검색합니다.