پیغام
پیغام واٹرمل کا اہم حصہ ہے۔ پیغام "منتشروں" دوارہ منتشر کئے جاتے ہیں اور "سننے والوں" کے ذریعے وصول ہوتے ہیں۔ پیغام کو پروسیس کرتے وقت، اگر پروسیس کرنے میں ناکامی ہو، تو آپکو Ack()
(کامیاب پروسیس کرنے کی بات) یا Nack()
(پروسیس کرنے میں ناکامی کی بات) بھیجنا چاہئے۔
پیغام کا Ack
اور Nack
سننے والوں کی ذمہ داری ہے (پیش فرض تنظیم میں، سننے والے Ack
یا Nack
کا انتظار کریں گے)۔
پورا ماخذ کوڈ: github.com/ThreeDotsLabs/watermill/message/message.go
// ...
type Message struct {
// یونیک کی Identifier یہ پیغام ہوتی ہے۔
//
// یہ واٹرمل دوارہ ڈیبگنگ کے لئے استعمال ہوتی ہے۔
// یونیک کی Identifier کھالی بھی ہو سکتی ہے۔
UUID string
// میٹا ڈیٹا پیغام کی میٹا ڈیٹا ہوتی ہے۔
//
// پورے پیمانے کے سے کڈ سے decode نہیں کی جانی والی ڈیٹا کو سٹور کرنے کے لئے استعمال کی جا سکتی ہے۔
// یہ ایچ ٹی ٹی پی درخواست ہیڈرز کی طرح ہوتی ہے۔
//
// میٹا ڈیٹا PubSub میں marshal ہوگی اور سیو ہوگی۔
Metadata Metadata
// پیغام کا paylaod ہوتا ہے۔
Payload Payload
// ack یہ بند ہوتی ہے جب تصدیق موصول ہوتی ہے۔
// noAck یہ بند ہوتی ہے جب نیگٹو ایشن کی تصدیق موصول ہوتی ہے۔
ack chan struct{}
noAck chan struct{}
ackMutex sync.Mutex
ackSentType ackType
ctx context.Context
}
// ...
Ack
Ack
بھیجنا
پورا ماخذ کوڈ: github.com/ThreeDotsLabs/watermill/message/message.go
// ...
// Ack پیغام کے لئے تصدیق بھیجتی ہے۔
//
// Ack روکتا نہیں ہے۔
// Ack ایدمپوٹنٹ ہوتا ہے۔
// اگر Nack پہلے سے بھیج دی گئی ہو تو false واپس آتا ہے۔
func (m *Message) Ack() bool {
// ...
Nack
پورا ماخذ کوڈ: github.com/ThreeDotsLabs/watermill/message/message.go
// ...
// Nack پیغام کے لئے نیگیٹو تصدیق بھیجتی ہے۔
//
// Nack روکتا نہیں ہے۔
// Nack ایدمپوٹنٹ ہوتا ہے۔
// اگر Ack پہلے سے بھیج دی گئی ہو تو false واپس آتا ہے۔
func (m *Message) Nack() bool {
// ...
Ack/Nack
وصول کرنا
پورا ماخذ کوڈ: github.com/ThreeDotsLabs/watermill/docs/content/docs/message/receiving-ack.go
// ...
select {
case
سیاق وساق
پیغام میں معمولی لائبریری کا سیاق، بالکل ایک HTTP درخواست کی طرح ہوتا ہے۔
پورا ماخذ کوڈ: github.com/ThreeDotsLabs/watermill/message/message.go
// ...
// Context پیغام کا سیاق واپس دیتا ہے۔ سیاق کو تبدیل کرنے کے لئے، SetContext استعمال کریں۔
//
// واپس دیا گیا سیاق ہمیشہ غیر نیل ہوتا ہے؛ پیش فرض سیاق پس منظری ہے۔
func (m *Message) Context() context.Context {
if m.ctx != nil {
return m.ctx
}
return context.Background()
}
// SetContext فراہم سیاق کو پیغام کے سیاق کے طور پر سیٹ کرتا ہے۔
func (m *Message) SetContext(ctx context.Context) {
m.ctx = ctx
}
// ...