ერთი ნაკადი აყენებს პროქსის თვისებას, აგზავნის მოთხოვნას და აღადგენს ძველ მნიშვნელობას. სხვა ნაკადი იგივეს აკეთებს სხვა პროქსით. კოდი ზემოდან ქვემოთ კითხვისას მოწესრიგებულად გამოიყურება, მაგრამ ორივე ნაკადი ცვლის 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 პროქსების სია გთავაზობთ კანდიდატ საბოლოო წერტილებს. მოთხოვნის ვადები და პროქსის ავთენტიფიკაცია დააკონფიგურირეთ ცალკე აპლიკაციის საჭიროებების მიხედვით.

მშენებლის proxy მეთოდი აღრიცხავს არჩევანს კლიენტის დონეზე. ეს პოლიტიკას უფრო ადვილად შესამოწმებელს ხდის, ვიდრე ასინქრონული ოპერაციების გარშემო გახვეული გლობალური ჩანაწერების თანმიმდევრობა.

გლობალურ პარამეტრებს ჯერ კიდევ აქვთ გამოყენება

ერთი JVM-ის მასშტაბის პროქსის პოლიტიკა შეიძლება იყოს მიზანშეწონილი, როცა ყველა მონაწილე კლიენტმა უნდა დაიცვას ის. დააყენეთ ეს პოლიტიკა აპლიკაციის გაშვებისას და შეამოწმეთ, რომელი ბიბლიოთეკები პატივს სცემენ მას.

პრობლემები ჩნდება, როცა გლობალურ თვისებებს იყენებენ ცალკეული მოთხოვნების დროებით გადამრთველად. სერვერზე ფონური მუშები და ბიბლიოთეკის გამოძახებები შეიძლება პარალელურად მუშაობდნენ, თუნდაც თქვენი მეთოდი სინქრონულად გამოიყურებოდეს. შეინახეთ მარშრუტიზაციის მდგომარეობა იმ კლიენტთან ან კონექტორთან, რომელიც ფლობს კავშირს, რათა სხვა მოთხოვნამ ვერ შეცვალოს ის სამუშაოს შუაში.

დაკავშირებული სტატიები