जावाडोक के अनुसार, यदि मैं javax.jms पर प्राप्त() को कॉल करता हूं। मैसेजकंस्यूमर यह संदेश तब तक अनिश्चित काल तक अवरुद्ध होगा जब तक कि संदेश उपभोक्ता बंद न हो जाए।javax.jms.MessageConsumer प्राप्त होने पर प्राप्त होता है जब उपभोक्ता
मेरे पास एक धागा है जिसमें एक प्राप्त() कहा जा रहा है। थ्रेड शट डाउन के हिस्से के रूप में मैं करीबी() को कॉल कर रहा हूं, लेकिन उपभोक्ता अभी भी प्राप्त करने में अवरुद्ध है() और इसलिए थ्रेड बंद नहीं होगा। मेरे कोड का सार है:
public String receiveMessage() {
...
...
System.out.println("About to receive")
TextMessage message = (TextMessage) consumer.receive();
System.out.println("No longer receiving")
...
...
}
public void stop() {
try {
if (consumer != null) {
consumer.close();
}
} catch (JMSException ex) {
throw new IllegalStateException(ex);
}
}
डिबगर में मैं करीब से देख सकते हैं() बुलाया जा रहा है, लेकिन अभी भी अवरोधों का सामना करते। यदि मैं टाइमआउट के साथ प्राप्त() विधि का उपयोग करता हूं तो यह टाइमआउट समाप्त होने तक अवरुद्ध हो जाएगा।
सबकुछ मेरे लिए सही दिखता है, उम्मीद है कि कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं।
जेएमएस अंतर्निहित कार्यान्वयन के लिए कुख्यात रूप से विशिष्ट है। यह मदद करेगा अगर आपने कहा कि आप किस का उपयोग कर रहे थे। – skaffman
जवाब देने के लिए धन्यवाद। यह आईबीएम एमक्यू 7.0.0.2 – DaveRlz
[प्राप्तNoWait] (http://docs.oracle.com/javaee/1.4/api/javax/jms/MessageConsumer.html#receiveNoWait()) –