একটি থ্রেড একটি প্রক্সি বৈশিষ্ট্য সেট করে, একটি অনুরোধ করে এবং পুরোনো মান পুনরুদ্ধার করে। আরেকটি থ্রেড ভিন্ন প্রক্সি দিয়ে একই কাজ করে। কোডটি উপর থেকে নিচে পড়লে গোছানো দেখায়, কিন্তু দুটি থ্রেডই শেয়ার করা JVM অবস্থা বদলাচ্ছে।

System.setProperty() প্রক্রিয়ার জন্য একটি সিস্টেম বৈশিষ্ট্য বদলায়। এটি যে থ্রেড ডেকেছে তার সাথে কোনো পথ সংযুক্ত করে না। একটি একই সময়ের অনুরোধ অন্যের কাজের জন্য লেখা মান দেখতে পারে, এবং একটি বিদ্যমান ক্লায়েন্ট ইতিমধ্যে নিজের কনফিগারেশন ধরে রাখতে পারে।

পথটিকে ক্লায়েন্টের অংশ করুন

Java-র HTTP ক্লায়েন্টের জন্য, সচেতনভাবে বাছাই করা প্রক্সি সিলেক্টর দিয়ে ক্লায়েন্ট তৈরি করুন। কাজের চাপ ভিন্ন রাউটিং নীতি চাইলে আলাদা ক্লায়েন্ট রাখুন:

HttpClient client = HttpClient.newBuilder()
    .proxy(ProxySelector.of(
        new InetSocketAddress("203.0.113.10", 8080)))
    .connectTimeout(Duration.ofSeconds(5))
    .build();

ইমপোর্টগুলি হল java.net, java.net.http, এবং java.time। ঠিকানাটি উদাহরণস্বরূপ; অনুমোদিত পাবলিক-রুট পরীক্ষার জন্য HTTP প্রক্সি তালিকা প্রার্থী এন্ডপয়েন্ট সরবরাহ করে। অনুরোধের সময়সীমা এবং প্রক্সি প্রমাণীকরণ অ্যাপ্লিকেশনের প্রয়োজনে আলাদাভাবে কনফিগার করুন।

বিল্ডারের প্রক্সি পদ্ধতি ক্লায়েন্ট-স্তরের পছন্দ রেকর্ড করে। এটি অসিঙ্ক্রোনাস কাজের চারপাশে মোড়া ধারাবাহিক গ্লোবাল লেখার চেয়ে নীতিটি পরীক্ষা করা সহজ করে তোলে।

গ্লোবাল সেটিংসের এখনও ব্যবহার আছে

একটি একক JVM-ব্যাপী প্রক্সি নীতি উপযুক্ত হতে পারে যখন প্রতিটি অংশগ্রহণকারী ক্লায়েন্ট এটি অনুসরণ করার কথা। অ্যাপ্লিকেশন শুরুতে সেই নীতি সেট করুন এবং কোন লাইব্রেরিগুলি এটি মানে তা যাচাই করুন।

গ্লোবাল বৈশিষ্ট্যগুলি পৃথক অনুরোধের জন্য সাময়িক সুইচ হিসেবে ব্যবহার করলে সমস্যা দেখা দেয়। সার্ভারে পটভূমির কর্মী ও লাইব্রেরি কল একসাথে চলতে পারে যদিও আপনার নিজের পদ্ধতি সিঙ্ক্রোনাস মনে হয়। রাউটিং অবস্থা সেই ক্লায়েন্ট বা সংযোগকারীর সাথে রাখুন যার সংযোগের মালিকানা আছে, যাতে অন্য অনুরোধ কাজের মাঝপথে এটি বদলাতে না পারে।

সম্পর্কিত নিবন্ধ