gRPC istemci
- Go kursu
- İleri seviye
- Ders 41/68
- 4 dk
gRPC istemcisiyle uzak metodu çağırmayı öğrenirsin.
gRPC istemcisi
İstemci bir bağlantı açar ve üretilen istemci türüyle çağrı yapar. Her çağrıya zaman aşımı içeren bir context verilir:
conn, err := grpc.NewClient("localhost:50051",
grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil { log.Fatal(err) }
defer conn.Close()
c := pb.NewSelamlayiciClient(conn)
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
r, err := c.Selam(ctx, &pb.SelamIstek{Ad: "Ada"})Bağlantıyı paylaş
grpc.ClientConn pahalıdır ve eşzamanlı kullanıma uygundur; her çağrıda yeni bağlantı açmak yerine uygulama boyunca bir tane paylaşılır. insecure.NewCredentials() yalnızca yerel geliştirme içindir; üretimde TLS kimlik bilgileri kullanılır.
Uygulama Zaman aşımı
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) oluştur, defer cancel() yaz. select ile time.After(50*time.Millisecond) ve ctx.Done() bekle; context önce biterse ctx.Err() yazdır.
Başlangıç kodu
package main
import (
"context"
"fmt"
"time"
)
func main() {
// buraya yaz
}Örnek çözüm
package main
import (
"context"
"fmt"
"time"
)
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond)
defer cancel()
select {
case <-time.After(50 * time.Millisecond):
fmt.Println("yanıt geldi")
case <-ctx.Done():
fmt.Println(ctx.Err())
}
}Beklenen çıktı
context deadline exceeded
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 İstemci çağrısına neden zaman aşımlı context verilir?
- Bağlantıyı açmak için
- Proto dosyasını okumak için
- Sunucu yanıt vermezse çağrı sonsuza dek beklemesin diye Doğru cevap
- Mesajı şifrelemek için
Açıklama: Süre dolunca çağrı codes.DeadlineExceeded ile biter; deadline sunucuya da iletilir ve o da işi bırakabilir.
2 İstemci oluştur
c := pb.____(conn)
c := pb.NewSelamlayiciClient(conn)
Açıklama: Üretilen New...Client fonksiyonu bağlantıdan bir istemci oluşturur.
3 İstemci parçaları
| Kavram | Anlamı |
|---|---|
grpc.NewClient |
Bağlantı |
New...Client |
Üretilmiş istemci |
context.WithTimeout |
Süre sınırı |
conn.Close |
Bağlantıyı kapatır |