private boolean processMessageForContinuation(KoalaMessage message) { if (message.getResponseCode() == null) return false; boolean continuationProcessed = false; RequestState<Continuation<KoalaMessage, Exception>> continuationState = continuationMap.get(message.getCorrelationUID()); if (continuationState != null) { continuationState.getResponse().receiveResult(message); continuationMap.remove(message.getCorrelationUID()); continuationProcessed = true; } return continuationProcessed; }
@Override public boolean messageReceived(PId id, KoalaMessage message) { LOG.debug(String.format("messageReceived(%s, %s)", id, message.getClass().getSimpleName())); MDCHelper.putTransactionUID(message.getTransactionUID()); boolean continuationProcessed = false; LOG.debug(String.format("messageReceived(Id - %s,KoalaMessage - %s)", id, message)); if (StringUtils.isNotBlank(message.getCorrelationUID())) { continuationProcessed = processMessageForContinuation(message); } MDCHelper.clearTransactionUID(); return continuationProcessed; }
@Override public void sendRequest( PId id, KoalaMessage message, KoalaMessageSender messageSender, Continuation<KoalaMessage, Exception> continuation) { LOG.debug( String.format( "sendRequest(Id - %s,KoalaMessage - %s, Sender - %s, Continuation - %s)", id, message, messageSender, continuation)); if (continuation == null || StringUtils.isNotBlank(message.getCorrelationUID())) { RequestState<Continuation<KoalaMessage, Exception>> continuationRequestState = new RequestState<Continuation<KoalaMessage, Exception>>(); continuationRequestState.setResponse(continuation); continuationMap.put(message.getCorrelationUID(), continuationRequestState); } else LOG.warn( String.format( "sendRequest called with message: %s to Id: %s containing no continuation or CorrelationUID. Skipping adding message to hash", id, message)); messageSender.routeMessage(id, message); }