Żądania i odpowiedzi strumieniowania

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Czego dowiesz się z tego artykułu

Po przeczytaniu tego artykułu dowiesz się:

  • czym jest przesyłanie strumieniowe żądań i odpowiedzi w Apigee Edge;
  • kiedy używać przesyłania strumieniowego żądań i odpowiedzi;
  • jak włączyć przesyłanie strumieniowe żądań i odpowiedzi.

Co to jest przesyłanie strumieniowe żądań i odpowiedzi?

Domyślnie przesyłanie strumieniowe HTTP jest wyłączone, a ładunki żądań i odpowiedzi HTTP są zapisywane w buforze w pamięci, zanim zostaną przetworzone przez potok serwera proxy interfejsu API. Możesz zmienić to zachowanie, włączając przesyłanie strumieniowe. Gdy przesyłanie strumieniowe jest włączone, ładunki żądań i odpowiedzi są przesyłane strumieniowo bez modyfikacji do aplikacji klienckiej (w przypadku odpowiedzi) i docelowego punktu końcowego (w przypadku żądań).

Kiedy należy włączyć przesyłanie strumieniowe?

Jeśli serwer proxy interfejsu API obsługuje bardzo duże żądania lub odpowiedzi (limity rozmiaru znajdziesz w sekcji Co jeszcze należy wiedzieć o przesyłaniu strumieniowym poniżej), możesz włączyć przesyłanie strumieniowe.

Co jeszcze należy wiedzieć o przesyłaniu strumieniowym?

Rozmiar ładunku wiadomości jest ograniczony do 10 MB w Edge Cloud i Private Cloud, nawet jeśli przesyłanie strumieniowe jest włączone. W przypadku żądań i odpowiedzi bez przesyłania strumieniowego przekroczenie tego rozmiaru powoduje błąd protocol.http.TooBigBody.

W przypadku wdrożeń Edge for Private Cloud możesz zmodyfikować limit rozmiaru żądania/odpowiedzi bez przesyłania strumieniowego. Przed wdrożeniem zmiany w środowisku produkcyjnym przetestuj ją.

  • W przypadku wersji Edge for Private Cloud wcześniejszych niż 4.16.01:

    na wszystkich procesorach komunikatów otwórz do edycji plik http.properties, aby zwiększyć limit w parametrze HTTPResponse.body.buffer.limit, a następnie ponownie uruchom procesor komunikatów.
  • W przypadku wersji Edge for Private Cloud 4.16.01 i nowszych:
    1. Otwórz do edycji plik /<inst_root>/apigee/customer/application/message-processor.properties. Jeśli ten plik nie istnieje, utwórz go.

    2. Ustaw właściwość conf_http_HTTPResponse.body.buffer.limit w pliku message-processor.properties. Przykład:
      conf_http_HTTPResponse.body.buffer.limit=5m

    3. Ponownie uruchom procesor komunikatów:
      > /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart

    4. Powtórz te czynności dla wszystkich procesorów wiadomości.

Jak włączyć przesyłanie strumieniowe żądań i odpowiedzi

Aby włączyć przesyłanie strumieniowe żądań, musisz dodać właściwość request.streaming.enabled do definicji ProxyEndpoint i TargetEndpoint w pakiecie serwera proxy i ustawić jej wartość na true. Podobnie, aby włączyć przesyłanie strumieniowe odpowiedzi, ustaw właściwość response.streaming.enabled.

Te pliki konfiguracyjne znajdziesz w interfejsie zarządzania w widoku Tworzenie serwera proxy. Jeśli tworzysz serwer proxy lokalnie, te pliki definicji znajdują się w folderach apiproxy/proxies i apiproxy/targets.

Ten przykład pokazuje, jak włączyć przesyłanie strumieniowe żądań i odpowiedzi w definicji TargetEndpoint definicji.

<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>

Ten przykład pokazuje, jak włączyć przesyłanie strumieniowe odpowiedzi i żądań w definicji ProxyEndpoint definicji:

<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>

Więcej informacji o konfigurowaniu definicji punktów końcowych znajdziesz w artykule Właściwości punktów końcowych.

Powiązane przykłady kodu

Przykłady serwerów proxy interfejsu API na GitHubie można łatwo pobrać i używać. Informacje o pobieraniu i używaniu przykładów znajdziesz w artykule Korzystanie z przykładowych serwerów proxy interfejsu API.

Przykładowe serwery proxy, które obsługują przesyłanie strumieniowe:

  • streaming – pokazuje serwer proxy interfejsu API skonfigurowany do przesyłania strumieniowego HTTP.
  • Edge Callout: Signed URL Generator – ilustruje najlepszą praktykę generowania podpisanego adresu URL w celu uzyskania dostępu do dużych plików zamiast przesyłania ich strumieniowo w żądaniu lub odpowiedzi.