منتخب کنندہ کامل طور پر گھوم سکتا ہے اور پھر بھی پہلا پروکسی ہی چنتا رہ سکتا ہے۔ غلطی یہ ہے کہ ہر درخواست کے لیے نادانستہ طور پر نیا منتخب کنندہ بنا دیا جائے، جو دوسرا انتخاب کرنے سے پہلے ہی اس کا شمار کنندہ ری سیٹ کر دیتا ہے۔

منتخب کنندہ ایک بار بنائیں اور اسے ٹرانسپورٹ کے ساتھ رکھیں۔ HTTP پروکسی فہرست URL مجموعے کے لیے عوامی HTTP امیدوار فراہم کر سکتی ہے جب درخواستیں عوامی واسطوں کی اجازت دیں۔ پہلے سے تصدیق شدہ، خالی نہ ہونے والی پروکسی URL فہرست سے شروع کریں:

func rotatingProxy(urls []*url.URL) func(*http.Request) (*url.URL, error) {
    var mu sync.Mutex
    next := 0
    return func(*http.Request) (*url.URL, error) {
        mu.Lock()
        selected := urls[next]
        next = (next + 1) % len(urls)
        mu.Unlock()
        return selected, nil
    }
}

ارد گرد کی ایپلیکیشن کو خالی فہرست مسترد کرنی چاہیے، URL کی تصدیق کرنی چاہیے اور عام net/http، net/url اور sync درآمدات استعمال کرنی چاہئیں۔ جب تک یہ منتخب کنندہ اسے استعمال کرتا ہے فہرست غیر متغیر رہنی چاہیے، یا الگ سے ہم آہنگ کیے گئے ڈیزائن سے بدلی جانی چاہیے۔

واپس دیا گیا فنکشن ایک محفوظ http.Transport سے منسلک کریں۔ Mutex ہم وقت کال بیکس کے درمیان انتخاب کی ترتیب کی حفاظت کرتا ہے۔ سست نیٹ ورک درخواست مکمل ہونے کے دوران تالا پکڑے رکھنے کی ضرورت نہیں۔

کسی راستے کو محض چھاپنے کے لیے استعمال نہ کریں

تشخیصی پیغام کے لیے منتخب کنندہ کو دوبارہ بلانا شمار کنندہ کو پھر آگے بڑھاتا ہے۔ وہ اخراج آپ کی زیر تحقیق درخواست کے استعمال کردہ امیدوار کے بجائے اگلے امیدوار کی وضاحت کر سکتا ہے۔ انتخاب کو حقیقی کال بیک کے اندر محفوظ اینڈ پوائنٹ شناخت کنندہ کے ساتھ ریکارڈ کریں۔

کال بیک کی درخواست اس بات کا ثبوت نہیں کہ درخواست کامیابی سے پہنچ گئی۔ ری ڈائریکٹ یا اضافی ٹرانسپورٹ کوششیں ”ایک ایپلیکیشن کال، ایک انتخاب“ کی سادہ مفروضے کو پیچیدہ بنا سکتی ہیں۔ اگر کسی ورک فلو کو کئی کارروائیوں کے دوران ایک راستہ برقرار رکھنا ہو تو عالمی گھومتے کال بیک کے بجائے ورک فلو کی سرحد پر وہ راستہ منتخب کریں۔

گول باری بھی الگ عوامی اخراج کی ضمانت نہیں دیتی۔ یہ اینڈ پوائنٹس کا شیڈول بناتی ہے۔ حتمی شناخت ہر اینڈ پوائنٹ کے فراہم کردہ راستے کی خصوصیت رہتی ہے۔

متعلقہ مضامین