मैं स्प्रिंग-काफ्का संस्करण 1.2.1 का उपयोग कर रहा हूं और, जब काफ्का सर्वर डाउन/पहुंच योग्य नहीं है, तो एसिंक्रोनस कॉल एक समय के लिए ब्लॉक भेजता है। ऐसा लगता है कि टीसीपी टाइमआउट है। कोड कुछ इस तरह है:स्प्रिंग काफ्का एसिंक्रोनस कॉल ब्लॉक
ListenableFuture<SendResult<K, V>> future = kafkaTemplate.send(topic, key, message);
future.addCallback(new ListenableFutureCallback<SendResult<K, V>>() {
@Override
public void onSuccess(SendResult<K, V> result) {
...
}
@Override
public void onFailure(Throwable ex) {
...
}
});
मैं वसंत-काफ्का कोड पर एक बहुत शीघ्रता से अवलोकन कर लिया है और यह एक भविष्य के लिए एक कॉलबैक बातचीत का अनुवाद, बस काफ्का क्लाइंट लाइब्रेरी के लिए साथ काम पारित करने के लिए लगता है ऑब्जेक्ट इंटरैक्शन। कफका क्लाइंट लाइब्रेरी को देखते हुए, कोड अधिक जटिल हो जाता है और मैंने इसे समझने में समय नहीं लगाया, लेकिन मुझे लगता है कि यह एक ही थ्रेड में रिमोट कॉल (मेटाडाटा, कम से कम?) बना सकता है।
उपयोगकर्ता के रूप में, मुझे वसंत-काफ्का विधियों की उम्मीद थी जो भविष्य में वापस लौटने के लिए भविष्य लौट आए, भले ही रिमोट काफ्का सर्वर पहुंच योग्य न हो।
मेरी समझ गलत है या यदि यह एक बग है तो कोई पुष्टि होगी। मैं इसे अपने अंत में अब के अंत में असंकालिक बना रहा।
एक और समस्या यह है कि वसंत-काफ्का दस्तावेज, शुरुआत में, यह सिंक्रोनस और एसिंक्रोनस भेजने के तरीके प्रदान करता है। मुझे कोई भी तरीका नहीं मिला जो वायदा वापस नहीं करता है, शायद दस्तावेज़ीकरण को अद्यतन करने की आवश्यकता है।
यदि आवश्यक हो तो मुझे कोई और विवरण प्रदान करने में खुशी होगी। धन्यवाद।
आपकी प्रतिक्रिया के लिए धन्यवाद। नहीं, मैं इस एनोटेशन का उपयोग नहीं कर रहा हूं, दस्तावेज़ीकरण में इसके बारे में कुछ भी नहीं था। मैं कोशिश करूँगा और आपको बता दूंगा कि क्या यह समस्या हल करता है। –
@EnableAsync का उपयोग करके दुर्भाग्य से कुछ भी नहीं बदला =/ –