Konfigurieren einer API für vom Server gesendete Ereignisse

GILT FÜR: Entwickler | Basic | Basic v2 | Standard | Standard v2 | Premium

Dieser Artikel enthält Richtlinien zum Konfigurieren einer API in API Management, die vom Server gesendete Ereignisse (Server-Sent Events, SSE) implementiert. SSE basiert auf dem HTML5-Standard EventSource für das automatische Streamen (Pushen) von Daten an einen Client über HTTP, nachdem ein Client eine Verbindung hergestellt hat.

Tipp

API Management bietet auch native Unterstützung für WebSocket-APIs, die eine einzelne, persistente, bidirektionale Verbindung zwischen einem Client und einem Server offenhalten.

Voraussetzungen

Richtlinien für SSE

Halten Sie sich an die folgenden Richtlinien, wenn Sie API Management verwenden, um eine Back-End-API zu erreichen, von der SSE implementiert wird:

  • Auswählen der Dienstebene für lange ausgeführte HTTP-Verbindungen – SSE basiert auf einer langfristig ausgeführten HTTP-Verbindung, die in bestimmten Tarifen von API Management unterstützt wird. Langfristige Verbindungen werden in den klassischen und v2 API Management-Tarifen unterstützt, nicht aber im Verbrauchstarif.

  • Halten Sie Verbindungen im Leerlauf aufrecht: Wenn sich eine Verbindung zwischen Client und Back-End ggf. vier Minuten oder länger im Leerlauf befindet, implementieren Sie einen Mechanismus, um die Verbindung aufrechtzuerhalten. Aktivieren Sie beispielsweise ein TCP-Keepalive-Signal am Back-End der Verbindung, oder senden Sie mindestens alle vier Minuten Datenverkehr von der Clientseite.

    Diese Konfiguration ist erforderlich, um das auf vier Minuten festgelegte Timeout für Sitzungen im Leerlauf außer Kraft zu setzen, das durch die in der API Management-Infrastruktur verwendete Azure Load Balancer-Instanz erzwungen wird.

  • Leiten Sie Ereignisse umgehend an Clients weiter: Deaktivieren Sie die Antwortpufferung in der forward-request-Richtlinie, damit Ereignisse sofort an die Clients weitergeleitet werden. Beispiel:

    <forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
    
  • Vermeiden Sie die Verwendung anderer Richtlinien mit Antwortpufferung: Bestimmte Richtlinien (beispielsweise validate-content) können ebenfalls Antwortinhalte puffern und sollten nicht mit APIs verwendet werden, von denen SSE implementiert wird.

  • Vermeiden Sie die Protokollierung von Anforderungs-/Antworttext für Azure Monitor, Application Insights und Event Hubs: Sie können die API-Anforderungsprotokollierung für Azure Monitor oder Application Insights mithilfe von Diagnoseeinstellungen konfigurieren. Mit den Diagnoseeinstellungen können Sie den Anforderungs-/Antworttext in verschiedenen Phasen der Anforderungsausführung protokollieren. Bei APIs, die SSE implementieren, kann dies zu unerwarteter Pufferung führen, was Probleme verursachen kann. Diagnoseeinstellungen für Azure Monitor und Application Insights, die im Bereich „Global“ oder „Alle APIs“ konfiguriert werden, gelten für alle APIs im Dienst. Sie können bei Bedarf die Einstellungen für einzelne APIs überschreiben. Bei der Protokollierung in Event Hubs konfigurieren Sie Umfang und Menge der Kontextinformationen für die Anforderungs-/Antwortprotokollierung mithilfe von log-to-eventhubs. Stellen Sie für APIs, die SSE implementieren, sicher, dass die Anforderungs-/Antworttextprotokollierung für Azure Monitor, Application Insights und Event Hubs deaktiviert ist.

  • Deaktivieren Sie die Zwischenspeicherung von Antworten: Vergewissern Sie sich, dass das Zwischenspeichern von Antworten nicht aktiviert ist, um sicherzustellen, dass Benachrichtigungen den Client zeitnah erreichen. Weitere Informationen finden Sie unter Cacherichtlinien für API Management.

  • Testen Sie die API unter Last: Testen Sie Ihre API mithilfe allgemeiner Methoden unter Last, um Leistungs- oder Konfigurationsprobleme zu erkennen, bevor sie die API in der Produktion verwenden.

Nächste Schritte