کسٹم پبلشر/سبسکرائبر انٹرفیس

کسٹم پبلشر/سبسکرائبر کی حمایت شامل کرنے کے لئے، آپ کو 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) (

کرنے کے لئے فہرست

دی گئی کچھ نکات کو آپ کو یاد نہیں کرنی چاہئیں:

  1. لاگنگ (اچھے پیغامات اور مناسب سطحیں۔)
  2. قابل تبدیل اور تشکیل پذیر پیغام انکوڈرز کے استعمال۔
  3. پبلشرز اور سبسکرائبر کے لئے Close() کا امکان دراصل درجہ ہونا چاہئیں:
    • تکراری
    • منقطع ہونے پر بھی مناسب طرح سے کام کرنا
    • سبسکرائبر کا اوٹ پٹ چینل منقطع ہونے پر بھی مناسب طرح سے کام کرنا (کیونکہ کسی نے سنا نہیں ہوتا)
  4. موصول پیغامات کے لئے Ack() اور Nack() کی حمایت۔
  5. Nack() کا استعمال کرتے ہوئے موصول پیغامات کی دوبارہ ترسیل کی حمایت۔
  6. جینیرک پبلشر/سبسکرائبر ٹیسٹنگ کا استعمال۔ آپ کو ٹیسٹنگ ٹربل شوٹنگ گائیڈ کے لئے ریفر کرنا چاہئے۔
  7. کارکردگی کی بہتر بنانے کی حمایت۔
  8. GoDocs، مارک ڈاون تفصیلات، اور تعارفی مثالیں۔