Go paketini kullanan Google Cloud Pub/Sub mesajları: pubsub – Josh Software

In: Genel


paket pubsub temel sunucu RPC’lerinin (Uzaktan Yordam Çağrıları) ayrıntılarını gizleyerek Google Cloud Pub/Sub mesajlarını yayınlamak ve almak için kolay bir yol sağlar. Google Cloud Pub/Sub, göndericileri ve alıcıları birbirinden ayıran çoktan çoğa, eşzamansız bir mesajlaşma sistemidir.

yayıncılık

Google Cloud Pub/Sub mesajları konulara yayınlanır. kullanılarak konular oluşturulabilir. pubsub paket gibi:

topic, err := client.CreateTopic(ctx, “topic-name”)
if err != nil {
	// Handle error.
}

Ardından, abone olan müşterinin buna yayınlanan mesajları alabilmesi için abonelik oluşturuyoruz.

_, err = client.CreateSubscription(ctx, “my-sub”, pubsub.SubscriptionConfig{Topic: topic,})
if err != nil {
	// TODO: Handle error.
}

Mesajlar daha sonra bir konuda yayınlanabilir:

res := topic.Publish(ctx, &pubsub.Message{
Data: []byte(“hello world”),
})

Publish, mesajı yayınlamak üzere kuyruğa alır ve hemen geri döner. Yeterli mesaj biriktiğinde veya yeterli zaman geçtiğinde, toplu mesajlar Pub/Sub hizmetine gönderilir.

Publish, bir gelecek gibi davranan bir PublishResult döndürür: Get yöntemi, mesaj hizmete gönderilene kadar bloklar.

Bir konuda Yayınla’yı ilk aradığınızda, goroutinler arka planda başlatılır. Bunları temizlemek için goroutinlerDurdur’u arayın:

alma

Bir konuda yayınlanan iletileri almak için istemciler konuya abonelikler oluşturur. Konu başına birden fazla abonelik olabilir; konuya yayınlanan her mesaj, tüm aboneliklerine iletilecektir.

sub := client.Subscription(“my-sub”)

Mesajlar daha sonra bir abonelikten geri arama yoluyla tüketilir:

err = sub.Receive(ctx, func(ctx context.Context, m *pubsub.Message) {
fmt.Println(string(m.Data))
m.Ack() // Acknowledge that we’ve consumed the message.
})
if err != nil {
	// TODO: Handle error.
}

Geri arama, verimi en üst düzeye çıkararak birden çok goroutin tarafından eşzamanlı olarak çağrılır. Alma çağrısını sonlandırmak için bağlamını iptal edin.

İstemci kodu mesajı işledikten sonra, Message.Ack veya Message.Nack’i çağırmalıdır; aksi takdirde mesaj sonunda yeniden iletilecektir. Ack/Nack, bir goroutinden değil, Receive işleyici işlevi içinde çağrılmalıdır ZORUNLU. Aksi takdirde, akış denetimi (örn. ReceiveSettings.MaxOutstandingMessages) dikkate alınmaz ve Alma iptal edilirken iletiler yetim kalabilir.

öykünücü

Bu kitaplıkla bir öykünücü kullanmak için, öykünücünüzün çalıştığı adrese PUBSUB_EMULATOR_HOST ortam değişkenini ayarlayabilirsiniz. Bu, istekleri Cloud Pub/Sub yerine bu adrese gönderir. Daha sonra her zamanki gibi bir istemci oluşturabilir ve kullanabilirsiniz:

err := os.Setenv(“PUBSUB_EMULATOR_HOST”, “localhost:8085”)
if err != nil {
// TODO: Handle error.
}
ctx := context.Background()
client, err := pubsub.NewClient(ctx, "test")
if err != nil {
log.Fatal(err)
}
defer client.Close()

Yayıncıyı ve ardından alıcıyı çalıştırmadan önce, öykünücüyü yerel olarak çalıştırmak için öncelikle öykünücünün çalıştığından emin olun:

gcloud beta emulators pubsub start --project=test

Projeyi tamamla bağlantı. Umarım bu yararlıdır. Herhangi bir öneri her zaman açığız. Eklendiğinde yeni bulgular eklenecektir.

Daha fazla okuma için bkz. pubsub paket. Okuduğunuz için teşekkürler.

Bir cevap yazın

Ready to Grow Your Business?

We Serve our Clients’ Best Interests with the Best Marketing Solutions. Find out More

How Can We Help You?

Need to bounce off ideas for an upcoming project or digital campaign? Looking to transform your business with the implementation of full potential digital marketing?

For any career inquiries, please visit our careers page here.
[contact-form-7 404 "Bulunamadı"]