में एक या नाक का उपयोग कैसे करें मैं वसंत AMQP के लिए नया हूं। मेरे पास एक ऐसा एप्लिकेशन है जो एक निर्माता है जो अन्य उपभोक्ता को संदेश भेज रहा है जो एक उपभोक्ता है।वसंत AMQP
एक बार उपभोक्ता संदेश प्राप्त करता है, हम डेटा के सत्यापन करेंगे।
डेटा उचित है अगर हम एसीके के लिए और संदेश कतार से हटाया जाना चाहिए है। यदि डेटा अनुचित है तो हमें डेटा को नकारात्मक (नकारात्मक स्वीकार) करना होगा ताकि इसे RabbitMQ में फिर से पंक्तिबद्ध किया जा सके।
मैं (यह बिल्कुल संदेश requeue नहीं होगा)
**factory.setDefaultRequeueRejected(true);**
(जब अपवाद तब होता है यह संदेश requeue जाएगा)
लेकिन मेरे मामले में मैं संदेश को स्वीकार करेगा आधारित
**factory.setDefaultRequeueRejected(false);**
में आए सत्यापन पर फिर इसे संदेश हटा देना चाहिए। अगर नाक तो संदेश की आवश्यकता है।
मैं RabbitMQ वेबसाइट में पढ़ा है
AMQP विनिर्देश को परिभाषित करता है basic.reject विधि है कि ग्राहकों को अलग-अलग अस्वीकार करने के लिए, संदेश दिए, दलाल को निर्देश या तो उन्हें त्यागने या उन्हें
कैसे requeue लिए अनुमति देता है उपरोक्त परिदृश्य को प्राप्त करने के लिए? कृपया मुझे कुछ उदाहरण दें। 46: 38,854 त्रुटि [stderr] (SimpleAsyncTaskExecutor
मैं एक छोटे से कार्यक्रम
logger.info("Job Queue Handler::::::::::" + new Date());
try {
}catch(Exception e){
logger.info("Activity Object Not Found Exception so message should be Re-queued the Message::::::::::::::");
}
factory.setErrorHandler(new ConditionalRejectingErrorHandler(cause ->{
return cause instanceof XMLException;
}));
संदेश factory.setDefaultRequeueRejected (सच)
09 विभिन्न अपवाद के लिए कतार फिर से नहीं कर रहा है की कोशिश की -1) org.activiti.engine.ActivitiObjectNotFoundException: कुंजी 'WF89012'
012 के साथ तैनात कोई प्रक्रिया नहीं09: 46: 39,102 जानकारी [com.example.bip.rabbitmq.handler.ErrorQueueHandler] (SimpleAsyncTaskExecutor -1) त्रुटि कतार से प्राप्त: {त्रुटि = नहीं जेपीए लेन-देन के लिए प्रतिबद्ध किया जा सका; नेस्टेड अपवाद javax.persistence.RollbackException है: लेन-देन के रूप में चिह्नित rollbackOnly}
स्पष्टीकरण के लिए धन्यवाद। मैंने कुछ कार्यक्रम की कोशिश की। क्या आप गलती को सुधार सकते हैं? – Chandan
यह मतलब नहीं है हमेशा त्रुटि हैंडलर से एक 'AmqpRejectAndDontRequeueException' फेंकने के लिए; इसके लिए, बस 'डिफ़ॉल्ट RequeueRejected = false' सेट करें। [इस उत्तर] में तकनीक का उपयोग करें (http://stackoverflow.com/questions/39509745/negative-acknowledgement-to-rabbitmq-queue-to-re-queue-the-message-using-spring/39511357#39511357) से केवल इसे 'XMLException' के लिए फेंक दें - आपके श्रोता को इसे फिर से फेंकना होगा। –
मेरे उत्तर में संपादन देखें। –