CXF Pipeline JMSAsyncHandler.doHandleResponse() CXF Pipeline JMSConduit.onMessage() JMSAsyncHandler.doYouKnowThisID() CXFMessageDrivenEndpoint.onMessage() CXF Pipeline JMSBackConduit.post() JMSConduit.sendExchange() JMSAsyncHandler.saveContext() request reply Schéma global avec transaction Dead Message Queue
CXF Pipeline JMSAsyncHandler.doHandleResponse() CXF Pipeline JMSConduit.onMessage() JMSAsyncHandler.doYouKnowThisID() CXFMessageDrivenEndpoint.onMessage() CXF Pipeline JMSBackConduit.post() JMSConduit.sendExchange() JMSAsyncHandler.saveContext() request reply Panne 1: - panne lors de l’envoi du message JMS Détail: - le contexte est persisté, le message n’est pas encore dans la queue request Attente: - la transaction annule la persistance du contexte. x
CXF Pipeline JMSAsyncHandler.doHandleResponse() CXF Pipeline JMSConduit.onMessage() JMSAsyncHandler.doYouKnowThisID() CXFMessageDrivenEndpoint.onMessage() CXF Pipeline JMSBackConduit.post() JMSConduit.sendExchange() JMSAsyncHandler.saveContext() request reply Panne 2: - panne lors du traitement du message du côté serveur Détail: - le message est dépilé de la queue request - panne du côté serveur - la réponse n’est pas encore délivrée Attente: - la transaction annule le dépilement du message - aucune action du côté serveur n’est prise en compte - on va réessayer plusieurs fois le traitement. Après n fois le message va être envoyé à la file DMQ x
CXF Pipeline JMSAsyncHandler.doHandleResponse() CXF Pipeline JMSConduit.onMessage() JMSAsyncHandler.doYouKnowThisID() CXFMessageDrivenEndpoint.onMessage() CXF Pipeline JMSBackConduit.post() JMSConduit.sendExchange() JMSAsyncHandler.saveContext() request reply Panne 3: - panne lors du traitement de la réponse du côté client Détail: - le message est dépilé de la queue reply - panne du côté client Attente: - la transaction annule le dépilement du message - le client essaye une certaine fois. Si le problème résiste, le message sera mis dans Dead Message Queue x
CXF Pipeline JMSAsyncHandler.doHandleResponse() CXF Pipeline JMSConduit.onMessage() JMSAsyncHandler.doYouKnowThisID() CXFMessageDrivenEndpoint.onMessage() CXF Pipeline JMSBackConduit.post() JMSConduit.sendExchange() JMSAsyncHandler.saveContext() request reply Panne 4: - le client n’est pas disponible lors de l’arrivée de la réponse Détail: - la réponse est dans la queue reply - il n’y a pas de consommateur pour cette queue Attente: - le client redémarre, cherche la réponse et la traite