스트리밍 요청 및 응답

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

이 주제의 과정 내용

이 주제를 읽고 나면 다음과 같은 사실을 알게 됩니다.

  • Apigee Edge에서 요청 및 응답 스트리밍에 대한 정보
  • 요청 및 응답 스트리밍을 사용해야 하는 경우
  • 요청 및 응답 스트리밍을 사용 설정하는 방법

요청 및 응답 스트리밍 정보

기본적으로 HTTP 스트리밍은 사용 중지되며 HTTP 요청 및 응답 페이로드는 API 프록시 파이프라인에서 처리되기 전에 메모리의 버퍼에 기록됩니다. 스트리밍을 사용 설정하여 이 동작을 변경할 수 있습니다. 스트리밍이 사용 설정되면 클라이언트 앱(응답의 경우) 및 대상 엔드포인트(요청의 경우)가 수정되지 않고 요청 및 응답 페이로드가 스트리밍됩니다.

스트리밍은 언제 사용 설정해야 하나요?

API 프록시가 대규모 요청 및 응답을 처리하는 경우(크기 제한의 경우 아래의 스트리밍에 대해 알아야 할 기타 사항 참조) 스트리밍을 사용 설정할 수 있습니다.

스트리밍에 대해 알아야 할 기타 사항은 무엇인가요?

스트리밍이 사용 설정된 경우에도 에지 클라우드 및 프라이빗 클라우드에서 메시지 페이로드 크기가 10MB로 제한됩니다. 스트리밍되지 않은 요청 및 응답에서 크기를 초과하면 protocol.http.TooBigBody 오류가 발생합니다.

프라이빗 클라우드용 Edge 배포에서는 스트리밍되지 않은 요청/응답 크기 한도를 수정할 수 있습니다. 변경사항을 프로덕션에 배포하기 전에 테스트해야 합니다.

  • 4.16.01 이전의 Edge for Private Cloud 출시 버전:

    모든 메시지 프로세서에서 http.properties 파일을 수정하여 HTTPResponse.body.buffer.limit 매개변수의 한도를 늘린 후 메시지 프로세서를 다시 시작합니다.
  • Edge for Private Cloud 출시 버전 4.16.01 이상의 경우:
    1. /<inst_root>/apigee/customer/application/message-processor.properties 파일을 수정합니다. 이 파일이 없으면 새로 만듭니다.

    2. message-processor.propertiesconf_http_HTTPResponse.body.buffer.limit 속성을 설정합니다. 예:
      conf_http_HTTPResponse.body.buffer.limit=5m

    3. 메시지 프로세서를 다시 시작합니다.
      > /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-processor restart

    4. 모든 메시지 프로세서에 대해 반복합니다.

요청 및 응답 스트리밍을 사용 설정하는 방법

요청 스트리밍을 사용 설정하려면 프록시 번들의 ProxyEndpoint 및 TargetEndpoint 정의에 request.streaming.enabled 속성을 추가하고 true로 설정해야 합니다. 마찬가지로 response.streaming.enabled 속성을 설정하여 응답 스트리밍을 사용 설정합니다.

이러한 구성 파일은 프록시의 개발 뷰에 있는 관리 UI에서 찾을 수 있습니다. 로컬에서 개발하는 경우 이러한 정의 파일은 apiproxy/proxiesapiproxy/targets에 있습니다.

이 샘플은 TargetEndpoint 정의에서 요청 및 응답 스트리밍 모두를 사용 설정하는 방법을 보여줍니다.

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <Properties>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
      <Property name="supports.http10">true</Property>
      <Property name="request.retain.headers">User-Agent,Referer,Accept-Language</Property>
      <Property name="retain.queryparams">apikey</Property>
    </Properties>
  </HTTPTargetConnection>
</TargetEndpoint>

이 예시에서는 ProxyEndpoint 정의에서 응답 및 요청 스트리밍 모두를 사용 설정하는 방법을 보여줍니다.

<ProxyEndpoint name="default">
  <HTTPProxyConnection>
    <BasePath>/v1/weather</BasePath>
    <Properties>
      <Property name="allow.http10">true</Property>
      <Property name="response.streaming.enabled">true</Property>
      <Property name="request.streaming.enabled">true</Property>
    </Properties>
  </HTTPProxyConnection>
</ProxyEndpoint>

엔드포인트 정의 구성에 대한 자세한 내용은 엔드포인트 속성 참조를 확인하세요.

관련 코드 샘플

GitHub의 API 프록시 샘플은 쉽게 다운로드하고 사용할 수 있습니다. 샘플을 다운로드하고 사용하는 방법은 샘플 API 프록시 사용을 참조하세요.

스트리밍 기능을 갖춘 샘플 프록시는 다음과 같습니다.

  • 스트리밍 - HTTP 스트리밍을 위해 구성된 API 프록시를 보여줍니다.
  • Edge 콜아웃: 서명된 URL 생성기 - 요청/응답에서 스트리밍하려고 시도하는 대신 대용량 파일에 액세스하기 위해 서명된 URL을 생성하는 권장사항을 설명합니다.