2013-10-30 6 views
6

तक टाइमआउट त्रुटि हमारे पास एक प्रवाह है जहां हमने सेवा प्रदाता को साबुन संदेश भेजने के लिए एक साबुन क्लाइंट लागू किया है।सफल

हमें विफल होने पर 3 बार सेवा कॉल को फिर से प्रयास करने की आवश्यकता है। इसलिए हमने सफल दायरे तक HTTP आउटबाउंड एंडपॉइंट का उपयोग किया है।

यह उम्मीद के अनुसार पुनः प्रयास कर रहा है, लेकिन सफलता परिदृश्य के मामले में, अगर हमें सेवा से प्रतिक्रिया मिलती है, तो भी हम नीचे दी गई त्रुटि को देख रहे हैं।

[DispatchThread: 1] org.apache.cxf.endpoint.ClientImpl: आपरेशन {http://support.cxf.module.mule.org/} के जवाब के लिए समय खत्म हो गया आह्वान।

अवलोकन:

मैं जब तक सफलतापूर्वक निकाल दिया गया और HTTP आउटबाउंड endpoint सीधे पड़ा है, इस मामले में कोई टाइमआउट त्रुटि है।

बाद में मैंने सफलतापूर्वक तब तक प्रयास करने की कोशिश की और प्रतिक्रिया स्वीकार करने के लिए एक स्वीकृति अभिव्यक्ति थी, फिर भी प्रतिक्रिया के साथ ही।

failureExpression = "# [message.inboundProperties 'http.status']! = 200 []" ackExpression = "# [message.correlationId]"

किसी भी एक कृपया सुझाव है कि कर सकते हैं, कैसे करने के लिए प्रतिक्रिया स्वीकार करने और त्रुटि को बाहर निकालने के लिए सफल होने तक कॉन्फ़िगर करें।

+0

कृपया अपनी प्रवाह कॉन्फ़िगरेशन जोड़ें। – user1760178

उत्तर

2

ackExpression के पास "प्रतिक्रिया स्वीकार करें" के साथ कुछ लेना देना नहीं है, यह एक ऐसा मूल्य उत्पन्न करने के लिए है जिसका उपयोग वर्तमान संदेश को until-successful संदेश प्रोसेसर में पारित करने के बाद नया संदेश पेलोड के रूप में उपयोग किया जाएगा।

response-timeout अपने आउटबाउंड HTTP एंडपॉइंट पर यह देखने के लिए कि क्या यह मदद करता है: until-successful गुंजाइश के संदर्भ में उपयोग किया गया डिफ़ॉल्ट टाइमआउट बहुत बड़ा है और यह समस्या बनाता है।

+0

धन्यवाद डेविड, हमने टाइमआउट को कम करने की कोशिश की है, यह कभी-कभी काम कर रही है और कुछ बार त्रुटि फेंक रही है, कोई लगातार व्यवहार नहीं है। क्या प्रतिक्रिया-समय निर्धारित करने के लिए हमारे पास कोई मानक या गणना है? – Kaaviraaj

+0

यह तार्किक नहीं है, क्या आप HTTP आउटबाउंड एंडपॉइंट पर 'keep-alive =" false "' जोड़ने का प्रयास कर सकते हैं? HTTP कनेक्टर पर 'keepSendSocketOpen =" false "जोड़ने का भी प्रयास करें। –

+0

मैंने कोशिश की, अभी भी वही प्रतिक्रिया। जैसा कि मैंने उल्लेख किया है, मैं इस मुद्दे को देख रहा हूं, केवल तभी जब हमारे पास अनटिल-सफल के अंदर HTTP आउटबाउंड एंडपॉइंट है, अन्यथा यह ठीक काम कर रहा है।लेकिन हमें तब तक सफल होने की आवश्यकता है क्योंकि हमें कनेक्शन विफलताओं के लिए प्रयास करने की कोशिश करनी है। – Kaaviraaj

1

मुझे इसके लिए एक समाधान मिला।

इससे पहले मेरे पास केवल सफल होने के दौरान केवल HttpOutbound एंडपॉइंट था और मुझे टाइमआउट समस्या का सामना करना पड़ रहा है।

अब मैं साबुन घटक भी शामिल करता हूं जब तक कि सफल क्षेत्र यह ठीक काम नहीं कर रहा है।

चूंकि सफल होने तक हमें केवल एक घटक होने की इजाजत मिलती है, इसलिए मैंने साबुन घटक लपेट लिया है और एचटीपीऑटबाउंड एंडपॉइंट एक प्रोसेसर श्रृंखला है।

<until-successful objectStore-ref="objectStore" 
      maxRetries="3" secondsBetweenRetries="2" deadLetterQueue-ref="xxxx" 
      doc:name="UntilSuccessfulService" >     
      <processor-chain doc:name="Processor Chain"> 
       <cxf:jaxws-client operation="Request1" serviceClass="xxxxxxx" enableMuleSoapHeaders="true" doc:name="SOAP"/> 
       <http:outbound-endpoint exchange-pattern="request-response" method="POST" doc:name="HTTP" host="localhost" path="cService" port="xxxx" connector-ref="HTTP_HTTPS"/>     
      </processor-chain>     
    </until-successful> 

धन्यवाद डेविड और आपके सभी प्रतिक्रियाओं के लिए।

संबंधित मुद्दे