Antipattern: เข้าถึงเพย์โหลดคำขอ/การตอบกลับเมื่อเปิดใช้สตรีมมิง

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

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

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

รูปแบบที่ไม่แนะนำ

การเข้าถึงเพย์โหลดของคำขอ/การตอบกลับเมื่อเปิดใช้การสตรีมจะทำให้ Edge กลับไปใช้โหมดบัฟเฟอร์เริ่มต้น

รูปที่ 1: การเข้าถึงเพย์โหลดของคำขอ/การตอบกลับเมื่อเปิดใช้การสตรีม

ภาพประกอบด้านบนแสดงให้เห็นว่าเราพยายามแยกตัวแปรออกจากเพย์โหลดของคำขอและแปลงเพย์โหลดการตอบกลับ JSON เป็น XML โดยใช้นโยบาย JSONToXML ซึ่งจะปิดใช้การสตรีมใน Edge

ผลกระทบ

  • การสตรีมจะถูกปิดใช้ ซึ่งอาจทำให้เวลาในการตอบสนองในการประมวลผลข้อมูลเพิ่มขึ้น
  • อาจพบการเพิ่มขึ้นของการใช้งานหน่วยความจำฮีปหรือข้อผิดพลาด OutOfMemory ใน Message Processor เนื่องจากการใช้บัฟเฟอร์ในหน่วยความจำ โดยเฉพาะอย่างยิ่งหากเรามีเพย์โหลดของคำขอ/การตอบกลับขนาดใหญ่

แนวทางปฏิบัติแนะนำ

  • อย่าเข้าถึงเพย์โหลดของคำขอ/การตอบกลับเมื่อเปิดใช้การสตรีม

อ่านเพิ่มเติม