Запросы и ответы для потоковой передачи

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Что вы узнаете

Из этой статьи вы узнаете:

  • Что такое потоковая передача запросов и ответов в Apigee Edge
  • Когда использовать потоковую передачу запросов и ответов
  • Как включить потоковую передачу запросов и ответов

Что такое потоковая передача запросов и ответов?

По умолчанию потоковая передача HTTP отключена, а полезные нагрузки HTTP-запросов и ответов записываются в буфер в памяти, прежде чем они будут обработаны конвейером прокси-сервера API. Вы можете изменить это поведение, включив потоковую передачу. Если потоковая передача включена, полезные нагрузки запросов и ответов передаются без изменений в клиентское приложение (для ответов) и целевую конечную точку (для запросов).

Когда следует включить стриминг?

Если ваш прокси-сервер API обрабатывает очень большие запросы и/или ответы (ограничения по размеру приведены в разделе Что ещё нужно знать о потоковой передаче ниже), вы можете включить потоковую передачу.

Что ещё нужно знать о стримах

Размер полезной нагрузки сообщения ограничен 10 МБ в Edge Cloud и Private Cloud, даже если включена потоковая передача. Если размер запроса или ответа без потоковой передачи превышает указанное значение, возникает ошибка protocol.http.TooBigBody.

В развертываниях Edge для частного облака можно изменить ограничение на размер запроса/ответа без потоковой передачи. Обязательно протестируйте изменения, прежде чем внедрять их в рабочую среду.

  • Для версий Edge для частного облака, предшествующих 4.16.01:

    На всех Message Processor измените файл http.properties, чтобы увеличить лимит в параметре HTTPResponse.body.buffer.limit, а затем перезапустите Message Processor.
  • Для Edge for Private Cloud версии 4.16.01 и более поздних:
    1. Измените файл /<inst_root>/apigee/customer/application/message-processor.properties. Если такого файла нет, создайте его.

    2. Задайте свойство conf_http_HTTPResponse.body.buffer.limit в файле message-processor.properties. Пример:
      conf_http_HTTPResponse.body.buffer.limit=5m

    3. Перезапустите обработчик сообщений:
      > /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart

    4. Повторите эти действия для всех процессоров сообщений.

Как включить потоковую передачу запросов и ответов

Чтобы включить потоковую передачу запросов, добавьте свойство request.streaming.enabled в определения ProxyEndpoint и TargetEndpoint в пакете прокси и задайте для него значение true. Чтобы включить стриминг ответов, задайте свойство response.streaming.enabled.

Эти файлы конфигурации можно найти в интерфейсе управления в режиме разработки для вашего прокси-сервера. Если вы разрабатываете локально, эти файлы определений находятся в apiproxy/proxies и apiproxy/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>

Подробнее о свойствах конечных точек…

Примеры кода

Примеры прокси-серверов API на GitHub легко скачать и использовать. Подробнее о том, как скачать и использовать примеры прокси API…

Примеры прокси-серверов, поддерживающих потоковую передачу:

  • streaming – пример прокси-сервера API, настроенного для потоковой передачи данных по протоколу HTTP.
  • Выноска Edge: генератор подписанных URL. Иллюстрирует рекомендацию создавать подписанный URL для доступа к большим файлам вместо того, чтобы пытаться передавать их в потоковом режиме в запросе/ответе.