예제 #1
0
 /**
  * Instantiate a message
  *
  * @param type {@link MessageType} as a string or a custom message type
  * @param msgId unique message identifier
  */
 public Message(String type, MessageId msgId) {
   super(new ZNRecord(msgId.stringify()));
   _record.setSimpleField(Attributes.MSG_TYPE.toString(), type);
   setMessageId(msgId);
   setMsgState(MessageState.NEW);
   _record.setLongField(Attributes.CREATE_TIMESTAMP.toString(), new Date().getTime());
 }
예제 #2
0
 /**
  * Instantiate a message
  *
  * @param record a ZNRecord corresponding to a message
  */
 public Message(ZNRecord record) {
   super(record);
   if (getMsgState() == null) {
     setMsgState(MessageState.NEW);
   }
   if (getCreateTimeStamp() == 0) {
     _record.setLongField(Attributes.CREATE_TIMESTAMP.toString(), new Date().getTime());
   }
 }
예제 #3
0
 /**
  * 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;
 }