मैं कुछ जावा कोड डिबग कर रहा हूं जो माइक्रोसॉफ्ट ऑफिस दस्तावेज़ों से डेटा खींचने के लिए अपाचे पीओआई का उपयोग करता है। कभी-कभी, यह स्मृति से बाहर होने पर एक बड़ा दस्तावेज़ और पीओआई दुर्घटनाओं का सामना करता है। उस बिंदु पर, यह त्रुटि को RabbitMQ में प्रकाशित करने का प्रयास करता है, ताकि अन्य घटक जान सकें कि यह चरण विफल रहा है और उचित कार्यवाही करें। हालांकि, जब यह कतार में प्रकाशित करने का प्रयास करता है, तो यह com.rabbitmq.client.AlreadyClosedException (clean connection shutdown; reason: Attempt to use closed channel)
मिलता है।मेरे खरगोश एमक्यू चैनल बंद क्यों रहते हैं?
private void publish(String exch, String route,
AMQP.BasicProperties props, Map<String, Object> message) throws Exception{
chan.basicPublish(exch, route, props,
JSONValue.toJSONString(message).getBytes());
}
मैं कोशिश ब्लॉक RabbitMQ चैनल को बंद करने के लिए प्रकट होता है कि भीतर किसी भी कोड नहीं मिल सकता है:
try {
//Extraction and indexing code
}
catch(Throwable t) {
// Something went wrong! We'll publish the error and then move on with
// our lives
System.out.println("Error received when indexing message: ");
t.printStackTrace();
System.out.println();
String error = PrintExc.format(t);
message.put("error", error);
if(mime == null) {
mime = "application/vnd.unknown";
}
message.put("mime", mime);
publish("IndexFailure", "", MessageProperties.PERSISTENT_BASIC, message);
}
पूर्णता के लिए, यहाँ प्रकाशित विधि है:
यहाँ त्रुटि हैंडलर कोड है । क्या ऐसी कोई परिस्थिति है जिसमें चैनल को बंद कर दिया जा सकता है?
EDIT: मुझे ध्यान रखना चाहिए कि पहले से ही क्लोज़ एक्सेप्शन basicPublish
प्रकाशित के अंदर कॉल द्वारा फेंक दिया गया है।
कैसे आप इस समस्या का समाधान: 1. कतार जो एक अच्छा समाधान 2. रीसेट RabbitMQ से नहीं है के नाम का नाम बदलने? –