/** * Create a reply based on an incoming message * * @param srcMessage the incoming message * @param instanceName the instance that is the source of the reply * @param taskResultMap the result of executing the incoming message * @return the reply Message */ public static Message createReplyMessage( Message srcMessage, String instanceName, Map<String, String> taskResultMap) { if (srcMessage.getCorrelationId() == null) { throw new HelixException( "Message " + srcMessage.getMessageId() + " does not contain correlation id"); } Message replyMessage = new Message(MessageType.TASK_REPLY, MessageId.from(UUID.randomUUID().toString())); replyMessage.setCorrelationId(srcMessage.getCorrelationId()); replyMessage.setResultMap(taskResultMap); replyMessage.setTgtSessionId(SessionId.from("*")); replyMessage.setMsgState(MessageState.NEW); replyMessage.setSrcName(instanceName); if (srcMessage.getSrcInstanceType() == InstanceType.CONTROLLER) { replyMessage.setTgtName("Controller"); } else { replyMessage.setTgtName(srcMessage.getMsgSrc()); } return replyMessage; }
/** * Set the session identifier of the destination node * * @param tgtSessionId session identifier */ public void setTgtSessionId(SessionId tgtSessionId) { if (tgtSessionId != null) { setTgtSessionId(tgtSessionId.stringify()); } }