OkHttp के निम्नलिखित initializations और रेट्रोफिट पर विचार करें:Okhttp डिस्पैचर सेटिंग पर ध्यान नहीं देता जब रेट्रोफिट RxJavaCallAdapterFactory के साथ प्रयोग किया
public static SomeServiceRestInterface newRestService(String apiUrl) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(apiUrl)
.client(createOkHttpClient())
.addCallAdapterFactory(RxJavaCallAdapterFactory.createWithScheduler(Schedulers.io()))
.addConverterFactory(createGsonConverter())
.build();
return retrofit.create(SomeServiceRestInterface.class);
}
private static OkHttpClient createOkHttpClient() {
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequestsPerHost(1);
dispatcher.setMaxRequests(1);
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.dispatcher(dispatcher).build()
}
जब परीक्षण बाकी कहता है, मैंने देखा है कि Okhttp पर setMaxRequestsPerHost या setMaxRequests सेटिंग्स का सम्मान नहीं करता है सब।
23/07 04:14:22.668 [RxIoScheduler-4] DEBUG - --> POST https://XXX/1 http/1.1
23/07 04:14:22.668 [RxIoScheduler-4] DEBUG - Content-Length: 0
23/07 04:14:22.668 [RxIoScheduler-4] DEBUG - --> END POST (0-byte body)
23/07 04:14:22.672 [RxIoScheduler-7] DEBUG - --> POST https://XXX/2 http/1.1
23/07 04:14:22.673 [RxIoScheduler-7] DEBUG - Content-Length: 0
23/07 04:14:22.673 [RxIoScheduler-7] DEBUG - --> END POST (0-byte body)
23/07 04:14:22.676 [RxIoScheduler-6] DEBUG - --> POST https://XXX/3 http/1.1
23/07 04:14:22.677 [RxIoScheduler-6] DEBUG - Content-Length: 0
23/07 04:14:22.677 [RxIoScheduler-6] DEBUG - --> END POST (0-byte body)
जहां XXX ही डोमेन है, 1/2/3 अलग रास्ते हैं: यहाँ एक साथ भेजा 3 अनुरोधों का लॉग है।
मुझे यकीन नहीं है कि क्यों मैंने सोचा कि संभवत: यह addCallAdapterFactory में RxJava शेड्यूलर सेट के साथ करना है।
क्या यह एक बग है? या क्या मैं कुछ न कुछ भूल रहा हूं?
मैं okhttp 3.4.1 का उपयोग कर रहा हूं, और 2.1.0 को पुन: स्थापित कर रहा हूं।
क्या आपने जांच की है कि आपने कितने http क्लाइंट बनाए हैं? –