مصدر

مکمل سورس کوڈ: github.com/ThreeDotsLabs/watermill/message/pubsub.go

// ...
type Publisher interface {
	// پبلش دی گئی پیغامات کو دی گئی عنوان پر پبلش کرتا ہے۔

	// پبلش سنکرونس یا غیر سنکرونس ہوسکتا ہے - یہ تنصیب پر منحصر ہوتا ہے۔

	// زیادہ تر پبلشر تنظیمات اتمی پیغام پبلشنگ کا آغاز نہیں کرتی ہیں۔
	// یہ مطلب ہے کہ اگر پیغام میں سے ایک کو پبلش کرنا ناکام ہوجائے تو اگلا پیغام نہیں پبلش ہوگا۔

	// پبلش کو تھریڈ-سیف ہونا چاہئے۔
	Publish(topic string, messages ...*Message) error
	// اگر پبلشر غیر سنکرونس ہو تو، بند کرنا چاہئے تاکہ بقایا نہ بھیجے گئے پیغامات کو فرسٹ کر دیا جائے۔
	Close() error
}
// ...

متعدد پیغام پبلش کرنا

زیادہ تر پبلشر تنظیمات اتمی پیغام پبلشنگ کا آغاز نہیں کرتی ہیں۔ یہ مطلب ہے کہ اگر پیغام میں سے ایک کو پبلش کرنا ناکام ہوجائے تو اگلا پیغام نہیں پبلش ہوگا۔

غیر سنکرونس پبلشنگ

پبلشنگ سنکرونس یا غیر سنکرونس ہوسکتی ہے - یہ تنصیب پر منحصر ہوتا ہے۔

بند کریں()

اگر پبلشر غیر سنکرونس ہو، تو بند کریں() غیر بھیجے گئے پیغامات کو فرسٹ کر دے گا۔ نہ بھولیں کہ سبسکرائبر کو بھی بند کریں۔ اگر نہیں کیا تو، آپ کچھ پیغامات کھو سکتے ہیں۔

سبسکرائبر

مکمل سورس کوڈ: github.com/ThreeDotsLabs/watermill/message/pubsub.go

// ...
type Subscriber interface {
	// استفادہ کرتے ہوئے تمام پیغامات کے ایک آؤٹپٹ چینل کے ساتھ واپسی دیتا ہے۔

	// جب سبسکرائبر پر `بند کریں()` بلایا جائے، تو چینل بند ہوجائے گا۔

	// اگلے پیغام کو حاصل کرنے کے لئے، منظوری کو وصول ہونے کے بعد `اک() کو کال کرنا چاہئے۔
	// اگر پیغام کی پروسیسنگ ناکام ہوجائے اور پیغام دوبارہ فرسٹ کیا جانا چاہئے تو، `نیک()` کو کال کرنی چاہئے۔

	// جب فراہم شدہ سیاٹی کینسل ہو جاتی ہے، تو سبسکرائبر سبسکرپشن کو بند کرے گا اور آؤٹپٹ چینل بند کرے گا۔
	// فراہم شدہ سیاٹی کو تمام تیار شدہ پیغامات پر مرتب کیا جاتا ہے۔
	// جب منظور ہے یا نیک کو پیغام پر کال کیا جاتا ہے، تو پیغام کی کنٹیکسٹ منسوخ ہوجائے گی۔
	Subscribe(ctx context.Context, topic string) (
}

ایک/نیک میکینزم

سبسکرائبرز کو پیغامات سے اک اور نیک کا سامنا کرنا ہوتا ہے۔ مناسب تنصیب کو وصولی کے بعد اک یا نیک کا انتظار ہونا چاہئے۔

اہم سبسکرائبر کی تنصیب کی مشورے: یہ کردار ادا کرنا مہتم آہے ہے کہ پیغام کی ذخیرہ/ایجنٹ کو میسج کے Baad Ack/offset بھیجے۔ ورنہ، اگر پروسیس پ؂رپےم ہونے سے پہلے پروسیس بند ہوتا ہے تو پیغام کے کھو جانے کی سمبٹ ہو سکتی ہے۔

بند کریں()

بند کریں سب سبسکرپشنز کو بند کرے گا اور ان کے آؤٹپٹ چینلز کو بند کرے گا، اور ضرورت ہو تو offsets کو فرسٹ کرے گا۔

کم از کم ایک بار تسلیم

واٹرمل کم از کم ایک بار تسلیم کی سیدھی دم کے ساتھ بنائی گئی ہے۔ یہ مطلب ہے کہ اگر پیغام کا پروسیسنگ میں ایک خرابی آتی ہے اور اک بھیجنے کی صلاحیت نہیں ہے، تو پیغام دوبارہ فرسٹ کیا جائے گا۔

آپ کو اس بات کو دماغ میں رکھنا ہوگا اور اپنے اپلیکیشن کو ادمی پروسیسنگ کے لئے بنانا ہوگا یا دوبارہ کوشش کرنے کے لئے ایک ریٹرائی میکینزم کا عملداری پروگرام بنانا ہوگا۔

ان باتوں میں بنا کرتے وقت غیر جدید ریٹرائی میڈلویئر بنانا ممکن نہیں ہے، لہذا ہم آپ کو خود اپنا عملداری پروگرام بنانے کی مشورہ دیتے ہیں۔

عام ٹیسٹنگ

ہر پب/سب میں زیادہ تر امور میں مشابہ ہوتا ہے۔ مختلف پب/سب کیلئے علیحدہ ٹیسٹ نہیں لکھنا چاہئے، ہم نے ایک ٹیسٹ سوٹ جو کسی بھی پب/سب پر گزرنا چاہئے، بنایا ہے۔

ان ٹیسٹس کو pubsub/tests/test_pubsub.go میں پایا جاتا ہے۔

تنصیب شدہ عملہ

دستیاب پب/سب تنصیبات کا جائزہ لینے کیلئے، براہ کرم مدد گار تنصیب شدہ پب/سب کو دیکھیں۔

کسٹم پب/سب کا تنصیب

ایک نئے پب/سب کے لئے تعمیل کے انتظامات کی ہدایت کے لئے براہ کرم "کسٹم پب/سب کا تنظیم" کو دیکھیں۔