से एक संदेश को कैसे हटाएं मॉनिटरिंग एडमिन टूल का उपयोग किये बिना जेएमएस कतार से संदेश हटाने के लिए कोई एपीआई है।जेएमएस कतार
उत्तर
एक QueueBrowser ऑब्जेक्ट आपको जो चाहिए वह हो सकता है। मुझे लगता है कि इसमें एक डिलीट विधि (या समान)
संदेश हटाने के लिए कोई प्रत्यक्ष API नहीं है। आप कतार से संदेश निकालने के लिए queueReceiver.receive() विधि को कॉल कर सकते हैं। QueueBrowser कतार से संदेशों को नहीं हटाएगा।
मैं तुम्हें एक संदेश किसी विशेष मापदंड से मेल खाते को हटाना चाहते संभालने हूँ:
के माध्यम से संदेश का उपभोग कैसे किया जाए क्या हम Receiver.receive() विधि के बिना करते हैं ... – avikodak
यहाँ कुछ मैं काम करने के लिए हो सकता है।
destinationJNDI "[email protected]_Notifications.NLNotificationReprocessQ" की तरह, कतार के JNDI नाम शामिल करना चाहिए:
Queue destination = session.createQueue("your_q");
QueueBrowser browser = session.createBrowser(destination);
Enumeration<?> enum1 = browser.getEnumeration();
while(enum1.hasMoreElements())
{
TextMessage msg = (TextMessage)enum1.nextElement();
if(msg.getStringProperty("any_prop").equals("some_prop"))
{
MessageConsumer consumer = session.createConsumer(destination, "id='" + msg.getStringProperty("id") + "'");
consumer.receive(1000);
}
}
यह कुछ है कि मैं वास्तव weblogic पर सफलतापूर्वक परीक्षण किया है।
javax.jms.Queue queue = (javax.jms.Queue) ctx.lookup(destinationJNDI.toString());
// lookup the queue connection factory
QueueConnectionFactory queueConnFactory = (QueueConnectionFactory) ctx.lookup(WEBLOGIC_JMS_XA_CONNECTION_FACTORY);
// create a queue connection
QueueConnection queueConn = queueConnFactory.createQueueConnection();
queueConn.start();
// create a queue session
Session queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
for (String id : idlist.split(",")) {
if (id.startsWith("ID:")) {
MessageConsumer consumer = queueSession.createConsumer(queue, " JMSMessageID='" + id + "'");
Message message = consumer.receive(1000);
out.write("message = " + message + " ");
out.write("deleted ID " + id + " ");
}
}
queueSession.close();
queueConn.close();
मैं:
Properties env = new Properties();
env.put(javax.naming.Context.PROVIDER_URL, PROVIDER_URL);
env.put(Context.SECURITY_PRINCIPAL, WL_USER);
env.put(Context.SECURITY_CREDENTIALS, WL_PASSWORD);
env.put(Context.INITIAL_CONTEXT_FACTORY, WL_INITIAL_CONTEXT_FACTORY);
InitialContext ctx = new InitialContext(env);
idlist संदेश आईडी कि आप हटाना चाहते हैं की एक सीएसवी सूची होना चाहिए
इस कोड है:
ctx की तरह एक वैध InitialContext होना चाहिए उपभोक्ता को संदेश हटाने के लिए अतिरिक्त रूप से session.commit()
पर कॉल करना पड़ा।
इसके अतिरिक्त, receivenowait
एपीआई काम नहीं करता है; इसके बजाय receive(1000)
पर कॉल करें।
यहाँ कोड का एक काम कर टुकड़ा मुझे लगता है कि लिखा jboss
पर काम किया है:
try {
connection = connectionFactory.createConnection();
session = connection.createSession(true,-1);
Queue queue = (Queue) QueueConnectionFactory.getInitialContext().lookup("/queue/DLQ");
QueueBrowser browser = session.createBrowser(queue);
Enumeration<?> enum1 = browser.getEnumeration();
while(enum1.hasMoreElements()) {
TextMessage msg = (TextMessage)enum1.nextElement();
MessageConsumer consumer = session.createConsumer(queue, "JMSMessageID='" + msg.getJMSMessageID() + "'");
//You can try starting the connection outside while loop as well, I think I started it inside while loop by mistake, but since this code worked I am hence letting you know what worked
connection.start();
Message message = consumer.receive(1000) ;
if (message != null) {
//do something with message
}
}
}
finally {
session.commit();
consumer.close();
browser.close();
session.close();
connection.close();
}
- 1. जेएमएस कतार
- 2. संदेश कतार (जेएमएस)
- 3. वेबलॉगिक जेएमएस कतार
- 4. जेबॉस जेएमएस रिमोट कतार?
- 5. जेएमएस कतार पूर्ण है
- 6. जेएमएस कतार कैसे आकर्षित करें?
- 7. जेएमएस कतार संदेश प्राप्त करते हैं?
- 8. किसी जेएमएस कतार में संदेश की संख्या
- 9. जेएमएस लेनदेन
- 10. जेएमएस कतार में रूबी का उपयोग नहीं, JRuby नहीं?
- 11. जेएमएस कतार और विषय नामकरण सम्मेलनों के लिए सुझाव
- 12. जेएमएस कतार का उपयोग करने में संभावित नुकसान?
- 13. जेएमएस क्लाइंट
- 14. जेएमएस/एक्टिवएमक्यू
- 15. एक जेएमएस सहसंबंध आईडी
- 16. प्रभावी जेएमएस प्रोसेसिंग
- 17. जेएमएस संदेश पुनः वितरण डिलीवरी
- 18. जेएमएस/हॉर्नेटक्यू = क्लाइंट से प्रोग्रामेटिक रूप से जेएमएस क्यूई कैसे बनाएं?
- 19. जेएमएस रोलबैक
- 20. आप वसंत जेएमएस के साथ एक जेएमएस विषय कैसे प्रकाशित करते हैं?
- 21. ओरेकल: जेएमएस संदेश
- 22. जेएमएस/संदेश कतारों का असली दुनिया उपयोग?
- 23. जेएमएस ट्रांसपोर्ट वी/एस एमक्यू परिवहन
- 24. जेबॉस 5 में ईजेबी और जेएमएस कतार कॉन्फ़िगरेशन की तैनाती का ऑर्डर कैसे करें?
- 25. मुझे जेएमएस का उपयोग क्यों करना चाहिए, न कि आरएमआई + कतार?
- 26. जब मैसेज() एक जेएमएसएक्सप्शन फेंकता है तो जेएमएस कतार पर क्या होता है?
- 27. एक जेएमएस कतार पर परीक्षण संदेश पोस्ट करने के लिए उपकरण?
- 28. जेएमएस - संदेश चयनकर्ता एकाधिक कतार और विषय उपभोक्ताओं के साथ कैसे काम करते हैं?
- 29. जेएमएस ईको सिस्टम में जेएमएस ब्रोकर की ज़िम्मेदारी क्या है?
- 30. जेएमएस और एक्टिवएमक्यू अपवाद
मुझे लगता है कि QueueBrowser में एक हटाने विधि है जहाँ तक जावा डॉक्स से पढ़ने के रूप में न ... कतार ब्राउज़र ही है कतार – avikodak
पढ़ने के लिए उपयोग किया जाता है आप सही हैं - लेकिन मुझे इस सामग्री में एक QueueBrowser का उपयोग याद है। अगर मुझे सही याद है कि मुझे कतार में संदेशों की गणना मिली है, उस पर पुनरावृत्त किया गया है, और उस संदेश को खपत किया जिसकी मुझे रूचि थी (और इसके साथ कुछ भी नहीं) – DaveH
ठीक है, मैं इसे देख लूंगा ... लेकिन मेरे पास छोटे दोगुनी हम कतार में होने पर संदेश के शीर्षलेखों को बदल सकते हैं ... ताकि मैं संपत्ति को "time_to_live" – avikodak