CodeBlanks Logo Icon CodeBlanks

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

main.go
package main

import (
    "context"
    "fmt"
    "time"
)

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
c := pb.____(conn)
Cevap
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

İleri seviye bölümündeki tüm dersler