50 likes | 157 Views
Dead Message Queue. CXF Pipeline. JMSAsyncHandler .saveContext(). request. MDBSenderConduit .sendExchange (). CXFMessageDrivenEndpoint .onMessage (). CXF Pipeline. JMSBackConduit .post (). reply. MDBSenderConduit .onMessage(). Dead Message Queue. JMSAsyncHandler
E N D
Dead Message Queue CXF Pipeline JMSAsyncHandler .saveContext() request MDBSenderConduit .sendExchange() CXFMessageDrivenEndpoint .onMessage() CXF Pipeline JMSBackConduit .post() reply MDBSenderConduit .onMessage() Dead Message Queue JMSAsyncHandler .doYouKnowThisContext() CXF Pipeline Global schemawith transaction JMSAsyncHandler .doHandleResponse()
CXF Pipeline JMSAsyncHandler .saveContext() request MDBSenderConduit .sendExchange() CXFMessageDrivenEndpoint .onMessage() CXF Pipeline MDBSenderConduit .onMessage() JMSBackConduit .post() reply JMSAsyncHandler .doYouKnowThisContext() CXF Pipeline JMSAsyncHandler .doHandleResponse() Failure 0 : - the client side (or server side) is not available at the arrival of the request (or the answer) Detail : - there is no consumer for their queues Result expected : - the POM will send the message to the consumer when it is restarted.
CXF Pipeline JMSAsyncHandler .saveContext() x request MDBSenderConduit .sendExchange() CXFMessageDrivenEndpoint .onMessage() CXF Pipeline MDBSenderConduit .onMessage() JMSBackConduit .post() reply JMSAsyncHandler .doYouKnowThisContext() CXF Pipeline JMSAsyncHandler .doHandleResponse() Failure 1 : Failure when sending the JMS message Detail : - Failure after the saveContext ‘s call ( before or after sending the JMS message. Global transaction hasn’t committed yet. ) - The context has been saved in database. - The JMS message hasn’t been in request’s queue yet. Result expected: - The global transaction rollback all
CXF Pipeline Dead Message Queue JMSAsyncHandler .saveContext() request MDBSenderConduit .sendExchange() CXFMessageDrivenEndpoint .onMessage() x CXF Pipeline POJO MDBSenderConduit .onMessage() JMSBackConduit .post() JMSAsyncHandler .doYouKnowThisContext() reply CXF Pipeline Failure 2 : - failure while processing the message on the server side Detail : - the message was popped from the queue request - failure appeared in POJO’s processing or in CXF pipelines - the answer is not yet delivered Result expected : - the global transaction cancels the unstacking of the message - no action on the server side is taken into account: all transactional resources (JDBC, JMS) will be rollbacked. - we will retry the processing several times. After n times, the message will be sent to the DMQ queue JMSAsyncHandler .doHandleResponse()
Dead Message Queue CXF Pipeline JMSAsyncHandler .saveContext() request MDBSenderConduit .sendExchange() CXFMessageDrivenEndpoint .onMessage() CXF Pipeline reply JMSBackConduit .post() MDBSenderConduit .onMessage() Dead Message Queue JMSAsyncHandler .doYouKnowThisContext() x CXF Pipeline Failure 3 : - failure while processing the message on the client side Detail: - the message is popped from the reply queue - failure appeared in client side: in JMSAsyncHandler’s processing or in CXF pipeline. Result expected: - the global transaction cancels the unstacking of the message from reply queue. - the client will retry the processing several times. After n times, the message will be sent to the DMQ queue JMSAsyncHandler .doHandleResponse()