คำขอและการตอบกลับสตรีมมิง

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

สิ่งที่คุณจะได้เรียนรู้ในหัวข้อนี้

หลังจากอ่านหัวข้อนี้ คุณจะทราบข้อมูลต่อไปนี้

  • การสตรีมคำขอและการตอบสนองใน Apigee Edge คืออะไร
  • กรณีที่ควรใช้การสตรีมคำขอและการตอบสนอง
  • วิธีเปิดใช้การสตรีมคำขอและการตอบสนอง

การสตรีมคำขอและการตอบสนองคืออะไร

โดยค่าเริ่มต้น การสตรีม HTTP จะปิดใช้อยู่ และระบบจะเขียนข้อมูลคำขอและการตอบสนองของ HTTP ลงใน บัฟเฟอร์ในหน่วยความจำก่อนที่ไปป์ไลน์พร็อกซี API จะประมวลผล คุณสามารถเปลี่ยนลักษณะการทำงานนี้ได้โดยการเปิดใช้การสตรีม เมื่อเปิดใช้การสตรีมแล้ว ระบบจะสตรีมข้อมูลคำขอและการตอบสนองไปยังแอปของไคลเอ็นต์ (สำหรับการตอบสนอง) และปลายทางเป้าหมาย (สำหรับ คำขอ) โดยไม่มีการแก้ไข

ฉันควรเปิดใช้การสตรีมเมื่อใด

หากพร็อกซี API จัดการคำขอและ/หรือการตอบสนองที่มีขนาดใหญ่มาก (ดูขีดจำกัดขนาดได้ที่หัวข้อ สิ่งที่ควรรู้เพิ่มเติมเกี่ยวกับการสตรีม ด้านล่าง) คุณอาจต้องการเปิดใช้การสตรีม

สิ่งที่ควรรู้เพิ่มเติมเกี่ยวกับการสตรีม

ขนาดเพย์โหลดของข้อความจะถูกจำกัดไว้ที่ 10 MB ใน Edge Cloud และ Private Cloud แม้ว่าจะเปิดใช้สตรีมมิงแล้วก็ตาม ในคำขอและการตอบสนองที่ไม่ได้สตรีม หากขนาดเกินขีดจำกัดดังกล่าวจะทำให้เกิดข้อผิดพลาด protocol.http.TooBigBody

ในการติดตั้งใช้งาน Edge for Private Cloud คุณสามารถแก้ไขขีดจำกัดขนาดคำขอ/การตอบสนองที่ไม่ได้สตรีม ได้ อย่าลืมทดสอบก่อนที่จะติดตั้งใช้งานการเปลี่ยนแปลงในเวอร์ชันที่ใช้งานจริง

  • สำหรับ Edge for Private Cloud เวอร์ชันก่อน 4.16.01:

    แก้ไขไฟล์ http.properties ใน Message Processor ทั้งหมดเพื่อเพิ่ม ขีดจำกัดในพารามิเตอร์ 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 เพื่อเปิดใช้การสตรีมการตอบสนอง

คุณสามารถค้นหาไฟล์การกำหนดค่าเหล่านี้ได้ใน UI การจัดการในมุมมอง "พัฒนา" สำหรับ พร็อกซี หากคุณกำลังพัฒนาในเครื่อง ไฟล์คำจำกัดความเหล่านี้จะอยู่ใน 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 Callout: Signed URL Generator - แสดงให้เห็นแนวทางปฏิบัติแนะนำในการสร้าง URL ที่ลงชื่อแล้วเพื่อเข้าถึงไฟล์ขนาดใหญ่แทนที่จะพยายามสตรีมไฟล์เหล่านั้นในคำขอ/การตอบสนอง