Kapan saya harus membuat stub asinkron ‹GRPC›?

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

Kapan saya harus membuat rintisan? Kapan setiap metode dipanggil atau hanya sekali?


person Ozturk    schedule 10.09.2020    source sumber


Jawaban (2)


Hanya sekali. Setelah rintisan dibuat, Anda terus memanggil metode di dalamnya.

person San P    schedule 10.09.2020
comment
Saya ingin menyetel batas waktu setiap metode tetapi batas waktu dapat disetel untuk rintisan, bukan untuk metode. Bagaimana cara menetapkan batas waktu untuk setiap metode? - person Ozturk; 11.09.2020
comment
CallOptions.withDeadlineAfter() github.com/grpc/grpc-java/blob/master/api/src/main/java/io/grpc/ . Anda dapat mengatur CallOptions pada panggilan apa pun. - person San P; 14.09.2020

Lapisan Stub adalah lapisan yang diekspos ke sebagian besar pengembang dan menyediakan pengikatan tipe-aman ke model data/IDL/antarmuka apa pun yang Anda adaptasi.

Jadi pada dasarnya Anda membuat satu rintisan untuk berinteraksi dengan satu layanan jarak jauh. Ini adalah antarmuka sisi klien untuk menjalankan layanan jarak jauh. Biasanya disarankan untuk menggunakan kembali Stub yang sama untuk beberapa panggilan.

Batas waktu RPC diimplementasikan sebagai CallOptions, yang dapat diakses/dimutasi sebelum panggilan dikirim. Jika Anda ingin menetapkan tenggat waktu untuk masing-masing RPC secara terpisah, Anda dapat menerapkan ClientInterceptor yang mengubah CallOptions panggilan dengan nilai dinamis. Sesuatu yang mirip dengan

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