ดำเนินการคำขอ RPC เป็นชุด
การดำเนินการนี้ดำเนินการคำขอ RPC เดียวหรือชุดคำขอแบบอะซิงโครนัส คำขอ RPC ถูกกำหนดโดยพารามิเตอร์หลักสามตัว:
- `address` (โฮสต์+พอร์ตหรือที่อยู่ BNS ของคำขอ) - `method` (ชื่อวิธีการสำหรับคำขอ) - `request` (สตริงโปรโตแบบอนุกรมหรือเวกเตอร์ของสตริงของอาร์กิวเมนต์คำขอ RPC)
ตัวอย่างเช่น หากคุณมีบริการ RPC ที่ทำงานบนพอร์ต localhost:2345 และอินเทอร์เฟซของบริการได้รับการกำหนดค่าด้วยการประกาศโปรโตต่อไปนี้:
service MyService {
rpc MyMethod(MyRequestProto) returns (MyResponseProto) {
};
}address = "localhost:2345"
method = "MyService/MyMethod"
ตัวอย่างเช่น หากต้องการส่ง `MyRequestProto` ที่ว่างเปล่า ให้เรียก op นี้ด้วย `request = ""` หากต้องการส่งคำขอว่าง แบบขนาน 5 รายการ ให้เรียก op นี้ด้วย `request = ["", "", "", "", ""]`
โดยทั่วไป เราสามารถสร้างชุดของโปรโตซีเรียลไลซ์ `MyRequestProto` จากเทนเซอร์แบบแบตช์ปกติโดยใช้ op `encode_proto` และแปลงการตอบสนอง `MyResponseProto` โปรโตซีเรียลไลซ์เป็นเทนเซอร์แบบแบตช์โดยใช้ op `decode_proto`
หมายเหตุ การทำงานกับสตริงโปรโตแบบอนุกรมจะเร็วกว่าการสร้างอินสแตนซ์ออบเจ็กต์โปรโตจริงในหน่วยความจำ ดังนั้นจึงคาดว่าจะไม่ลดประสิทธิภาพลงเมื่อเปรียบเทียบกับการเขียนเคอร์เนลแบบกำหนดเองสำหรับเวิร์กโฟลว์นี้
ไม่เหมือนกับ op `Rpc` มาตรฐาน หากการเชื่อมต่อล้มเหลวหรือผู้ปฏิบัติงานระยะไกลส่งคืนสถานะข้อผิดพลาด op นี้ ไม่ ทำให้เกิดข้อยกเว้นอีกครั้ง แต่รายการ `status_code` และ `status_message` สำหรับการเรียก RPC ที่เกี่ยวข้องจะถูกตั้งค่าโดยมีข้อผิดพลาดที่ส่งคืนจากการเรียก RPC เมตริกซ์ "การตอบสนอง" จะมีค่าการตอบสนองที่ถูกต้องสำหรับรายการมินิแบทช์ที่ RPC ไม่ล้มเหลว รายการที่เหลือจะมีสตริงว่าง
คลาสที่ซ้อนกัน
| ระดับ | ลอง Rpc.Options | แอ็ตทริบิวต์ทางเลือกสำหรับ TryRpc | |
วิธีการสาธารณะ
| TryRpc แบบคงที่ | สร้าง (ขอบเขตขอบเขต ที่อยู่ ตัวดำเนิน การ <String> ตัวถูกดำเนิน การ <String> วิธีการ คำขอตัว ถูกดำเนิน การ <String> ตัวเลือก... ตัวเลือก) วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ TryRpc ใหม่ |
| TryRpc.Options แบบคงที่ | FailFast (บูลีน FailFast) |
| TryRpc.Options แบบคงที่ | โปรโตคอล (โปรโตคอลสตริง) |
| เอาท์พุต <สตริง> | การตอบสนอง () รูปร่างเดียวกับ 'คำขอ' |
| เอาต์พุต <จำนวนเต็ม> | รหัสสถานะ () รูปร่างเดียวกับ 'คำขอ' |
| เอาท์พุต <สตริง> | ข้อความสถานะ () รูปร่างเดียวกับ 'คำขอ' |
| TryRpc.Options แบบคงที่ | timeoutInMs (หมดเวลานานInMs) |
วิธีการสืบทอด
วิธีการสาธารณะ
สร้าง TryRpc สาธารณะแบบคงที่ (ขอบเขต ขอบเขต ที่ อยู่ <String> ตัว ดำเนินการ วิธีดำเนิน การ <String> คำขอ ตัวดำเนินการ <String> ตัวเลือก... ตัวเลือก)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ TryRpc ใหม่
พารามิเตอร์
| ขอบเขต | ขอบเขตปัจจุบัน |
|---|---|
| ที่อยู่ | `0-D` หรือ `1-D` ที่อยู่ (เช่น host_name:port) ของเซิร์ฟเวอร์ RPC หากเทนเซอร์นี้มีมากกว่า 1 องค์ประกอบ ระบบจะส่งคำขอ rpc แบบขนานหลายรายการ อาร์กิวเมนต์นี้ออกอากาศด้วย 'วิธีการ' และ 'คำขอ' |
| วิธี | `0-D` หรือ `1-D` ที่อยู่วิธีการบนเซิร์ฟเวอร์ RPC หากเทนเซอร์นี้มีมากกว่า 1 องค์ประกอบ ระบบจะส่งคำขอ rpc แบบขนานหลายรายการ อาร์กิวเมนต์นี้ออกอากาศด้วย 'ที่อยู่' และ 'คำขอ' |
| ขอ | `0-D` หรือ `1-D` สตริงโปรโตแบบอนุกรม: อาร์กิวเมนต์คำขอ rpc หากเทนเซอร์นี้มีมากกว่า 1 องค์ประกอบ ระบบจะส่งคำขอ rpc แบบขนานหลายรายการ อาร์กิวเมนต์นี้ออกอากาศด้วย 'ที่อยู่' และ 'วิธีการ' |
| ตัวเลือก | มีค่าแอตทริบิวต์ทางเลือก |
การส่งคืน
- ตัวอย่างใหม่ของ TryRpc
TryRpc.Options แบบคงที่สาธารณะ ล้มเหลวอย่างรวดเร็ว (บูลีนล้มเหลวอย่างรวดเร็ว)
พารามิเตอร์
| ล้มเหลวเร็ว | 'บูลีน'. หากเป็น "จริง" (ค่าเริ่มต้น) ความล้มเหลวในการเชื่อมต่อ (เช่น เซิร์ฟเวอร์ไม่ตอบสนองในทันที) จะทำให้ RPC ล้มเหลว |
|---|
โปรโตคอล TryRpc.Options สาธารณะแบบคงที่ (โปรโตคอลสตริง)
พารามิเตอร์
| โปรโตคอล | โปรโตคอล RPC ที่จะใช้ สตริงว่างหมายถึงใช้โปรโตคอลเริ่มต้น ตัวเลือกรวมถึง 'grpc' |
|---|
สาธารณะ เอาท์พุท <จำนวนเต็ม> statusCode ()
รูปร่างเดียวกับ 'คำขอ' ค่าสอดคล้องกับรหัสแจงนับสถานะเทนเซอร์โฟลว์
สาธารณะ เอาท์พุท <สตริง> สถานะข้อความ ()
รูปร่างเดียวกับ 'คำขอ' ค่าที่สอดคล้องกับข้อความสถานะที่ส่งคืนจากการเรียก RPC
สาธารณะ TryRpc.Options หมด เวลา (timeoutInMs ยาว)
พารามิเตอร์
| หมดเวลาในMs | `อินท์`. หากเป็น `0` (ค่าเริ่มต้น) เคอร์เนลจะเรียกใช้คำขอ RPC และหมดเวลาเฉพาะเมื่อพ้นกำหนดเวลา RPC หรือหมดเวลาเซสชันเท่านั้น หากค่านี้มากกว่า `0` op จะเพิ่มข้อยกเว้นหาก RPC ใช้เวลานานกว่า `timeout_in_ms` |
|---|