CXF Pipeline

5
CXF Pipeline JMSAsyncHandler .doHandleResponse() CXF Pipeline MDBSenderConduit .onMessage() JMSAsyncHandler .doYouKnowThisID() CXFMessageDrivenEndpoint .onMessage() CXF Pipeline JMSBackConduit .post() MDBSenderConduit .sendExchange() JMSAsyncHandler .saveContext() request reply Global schema with transaction Dead Message Queue Dead Message Queue

description

Dead Message Queue. CXF Pipeline. JMSAsyncHandler .saveContext(). request. MDBSenderConduit .sendExchange (). CXFMessageDrivenEndpoint .onMessage (). CXF Pipeline. JMSBackConduit .post (). reply. MDBSenderConduit .onMessage(). Dead Message Queue. JMSAsyncHandler .doYouKnowThisID(). - PowerPoint PPT Presentation

Transcript of CXF Pipeline

Page 1: CXF Pipeline

CXF Pipeline

JMSAsyncHandler.doHandleResponse()

CXF Pipeline

MDBSenderConduit.onMessage()

JMSAsyncHandler.doYouKnowThisID()

CXFMessageDrivenEndpoint.onMessage()

CXF Pipeline

JMSBackConduit.post()

MDBSenderConduit.sendExchange()

JMSAsyncHandler.saveContext()

request

reply

Global schema with transaction

Dead Message Queue

Dead Message Queue

Page 2: CXF Pipeline

CXF Pipeline

JMSAsyncHandler.doHandleResponse()

CXF Pipeline

MDBSenderConduit.onMessage()

JMSAsyncHandler.doYouKnowThisID()

CXFMessageDrivenEndpoint.onMessage()

CXF Pipeline

JMSBackConduit.post()

MDBSenderConduit.sendExchange()

JMSAsyncHandler.saveContext()

request

reply

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.

Page 3: CXF Pipeline

CXF Pipeline

JMSAsyncHandler.doHandleResponse()

CXF Pipeline

MDBSenderConduit.onMessage()

JMSAsyncHandler.doYouKnowThisID()

CXFMessageDrivenEndpoint.onMessage()

CXF Pipeline

JMSBackConduit.post()

MDBSenderConduit.sendExchange()

JMSAsyncHandler.saveContext()

request

reply

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

x

Page 4: CXF Pipeline

CXF Pipeline

JMSAsyncHandler.doHandleResponse()

CXF Pipeline

MDBSenderConduit.onMessage()

JMSAsyncHandler.doYouKnowThisID()

CXFMessageDrivenEndpoint.onMessage()

CXF Pipeline

JMSBackConduit.post()

MDBSenderConduit.sendExchange()

JMSAsyncHandler.saveContext()

request

reply

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

x POJO

Dead Message Queue

Page 5: CXF Pipeline

CXF Pipeline

JMSAsyncHandler.doHandleResponse()

CXF Pipeline

MDBSenderConduit.onMessage()

JMSAsyncHandler.doYouKnowThisContext()

CXFMessageDrivenEndpoint.onMessage()

CXF Pipeline

JMSBackConduit.post()

MDBSenderConduit.sendExchange()

JMSAsyncHandler.saveContext()

request

reply

Dead Message Queue

Dead

Message

Queue

x 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