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

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

Что вы узнаете из этой темы

После прочтения этой статьи вы узнаете:

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

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

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

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

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

Что ещё мне следует знать о стриминге?

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

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

  • Для версий Edge for Private Cloud, предшествующих 4.16.01:

    На всех обработчиках сообщений отредактируйте файл http.properties , увеличив лимит в параметре HTTPResponse.body.buffer.limit , а затем перезапустите обработчик сообщений.
  • Для 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-прокси» для получения информации о загрузке и использовании примеров.

Примеры прокси-серверов с поддержкой потоковой передачи данных: