کسٹم پبلشر/سبسکرائبر انٹرفیس
کسٹم پبلشر/سبسکرائبر کی حمایت شامل کرنے کے لئے، آپ کو message.Publisher
اور message.Subscriber
انٹرفیس کا امکان پیدا کرنا ہوگا۔
مکمل سورس کوڈ: github.com/ThreeDotsLabs/watermill/message/pubsub.go
// ...
type Publisher interface {
// Publish کو مخصوص موضوع پر فراہم کردہ پیغامات کو شائع کرتا ہے۔
//
// امکان کے مطابق پبلش کو تنکھا یا غیر تنکھا طریقے سے بھی جاری کیا جا سکتا ہے۔
//
// زیادہ تر پبلشر کے اجراءات ایٹمک پیغام شعبہ کو حمایت نہیں کرتی ہیں۔
// یعنی اگر ایک پیغام کو شائع کرنے میں ناکامی روی دے، تو اگلا پیغام شائع نہیں ہوگا۔
//
// پبلش کو تھریڈ-سیف ہونا چاہئے۔
Publish(topic string, messages ...*Message) error
// اگر پبلشر غیر متزلزل ہے تو، بند کرنا بقاعدہ طور پر نا بھیجے گا۔
Close() error
}
// Subscriber پبلشر/سبسکرائبر کا خوراک حصہ ہے۔
type Subscriber interface {
// Subscribe موضوع سے موصول پیغاموں کے لئے ایک اوٹ پٹ چینل واپس کرتا ہے۔
// چینل بند ہوجائے گا جب سبسکرائبر پر Close() کا اندازہ لگایا جائے گا۔
//
// اگلے پیغام کو حاصل کرنے کے لئے، وصول شدہ پیغام پر Ack() کو بلایا جانا چاہئے۔
// اگر پیغام کی پروسیسنگ ناکام ہوجاتی ہے، اور پیغام دوبارہ موصول ہونا چاہئے تو، تو Nack() کو بلایا جائے گا۔
//
// جب فراہم شدہ ctx منسوخ ہوتا ہے، تو سبسکرائبر سبسکرپشن کو بند کردے گا اور اوٹ پٹ چینل۔
// فراہم شدہ ctx تمام پیدا شدہ پیغاموں پر سیٹ ہوتا ہے۔
// جب Nack یا Ack پیغام پر بلایا جائے تو، پیغام کا کنٹیکسٹ منسوخ ہوجاتا ہے۔
Subscribe(ctx context.Context, topic string) (
کرنے کے لئے فہرست
دی گئی کچھ نکات کو آپ کو یاد نہیں کرنی چاہئیں:
- لاگنگ (اچھے پیغامات اور مناسب سطحیں۔)
- قابل تبدیل اور تشکیل پذیر پیغام انکوڈرز کے استعمال۔
- پبلشرز اور سبسکرائبر کے لئے
Close()
کا امکان دراصل درجہ ہونا چاہئیں:- تکراری
- منقطع ہونے پر بھی مناسب طرح سے کام کرنا
- سبسکرائبر کا اوٹ پٹ چینل منقطع ہونے پر بھی مناسب طرح سے کام کرنا (کیونکہ کسی نے سنا نہیں ہوتا)
- موصول پیغامات کے لئے
Ack()
اورNack()
کی حمایت۔ -
Nack()
کا استعمال کرتے ہوئے موصول پیغامات کی دوبارہ ترسیل کی حمایت۔ - جینیرک پبلشر/سبسکرائبر ٹیسٹنگ کا استعمال۔ آپ کو ٹیسٹنگ ٹربل شوٹنگ گائیڈ کے لئے ریفر کرنا چاہئے۔
- کارکردگی کی بہتر بنانے کی حمایت۔
- GoDocs، مارک ڈاون تفصیلات، اور تعارفی مثالیں۔