เมื่อใดที่ฉันต้องสร้าง async stub ‹GRPC›

ManagedChannel managedChannel = ManagedChannelBuilder.forAddress("localhost", 8888).usePlaintext().build();
Grpc.Stub stub = CLIGrpc.newStub(managedChannel);

เมื่อใดที่ฉันต้องสร้างต้นขั้ว? เมื่อทุกวิธีถูกเรียกหรือเพียงครั้งเดียว?


person Ozturk    schedule 10.09.2020    source แหล่งที่มา


คำตอบ (2)


ครั้งเดียวเท่านั้น. เมื่อสร้าง stub แล้ว คุณจะเรียกวิธีการต่างๆ ต่อไป

person San P    schedule 10.09.2020
comment
ฉันต้องการตั้งค่าการหมดเวลาทุกวิธี แต่การหมดเวลาสามารถตั้งค่าสำหรับ stub ไม่ใช่สำหรับวิธีการ ฉันจะตั้งเวลาหมดเวลาสำหรับทุกวิธีได้อย่างไร - person Ozturk; 11.09.2020
comment
CallOptions.withDeadlineAfter() github.com/grpc/grpc-java/blob/master/api/src/main/java/io/grpc/ คุณสามารถตั้งค่า CallOptions ในการโทรใดก็ได้ - person San P; 14.09.2020

เลเยอร์ Stub คือสิ่งที่นักพัฒนาส่วนใหญ่เปิดเผย และจัดเตรียมการเชื่อมโยงแบบปลอดภัยกับโมเดลข้อมูล/IDL/อินเทอร์เฟซใดก็ตามที่คุณกำลังปรับเปลี่ยน

ดังนั้นโดยพื้นฐานแล้วคุณกำลังสร้าง stub หนึ่งอันสำหรับการโต้ตอบกับบริการระยะไกลเดียว เป็นอินเทอร์เฟซฝั่งไคลเอ็นต์สำหรับการเรียกใช้บริการระยะไกล โดยทั่วไปขอแนะนำให้ใช้ Stub เดิมซ้ำสำหรับการโทรหลายครั้ง

กำหนดเวลา RPC ถูกนำมาใช้เป็น CallOptions ซึ่งสามารถเข้าถึง/เปลี่ยนแปลงได้ก่อนที่จะส่งการโทร หากคุณต้องการกำหนดกำหนดเวลาสำหรับ RPC แต่ละรายการแยกจากกัน คุณสามารถใช้ ClientInterceptor ที่แก้ไขการโทร CallOptions ด้วยค่าไดนามิก บางสิ่งบางอย่างที่คล้ายกับ

private final AtomicInteger deadlineNano = new AtomicInteger();

class DeadlineAttachingInterceptor implements ClientInterceptor {
  @Override
  public <ReqT, RespT> ClientCall<ReqT, RespT>interceptCall(MethodDescriptor<ReqT, RespT> method,
      CallOptions callOptions, Channel next) {
  return next.newCall(method, callOptions.withDeadlineAfter(deadlineNano.get(), TimeUnit.NANOSECONDS));
}
person voidzcy    schedule 18.09.2020