in app/metrics/src/main/java/com/googlecodesamples/cloud/jss/metrics/action/Complete.java [113:134]
private MetricsComplete genAckMessage(Event event, float processTime, Timestamp publishTime)
throws UnknownHostException {
logger.info("event: {}, processTime {}, publishTime {}", event, processTime, publishTime);
MetricsComplete message = new MetricsComplete();
// Copy common attributes from event.
BeanUtils.copyProperties(event, message);
Instant startTime = event.getSessionStartTime();
Instant endTime = event.getSessionEndTime();
// Set additional attributes for ack message.
message.setEventTimestamp(endTime);
message.setPublishTimestamp(Instant.ofEpochSecond(publishTime.getSeconds()));
message.setProcessingTimeSec(PubSubUtil.formatFloat(processTime));
message.setAckTimestamp(Instant.ofEpochSecond(Instant.now().getEpochSecond()));
message.setSessionDurationHr(PubSubUtil.getDiffTimeInHour(endTime, startTime));
message.setBatteryLevelEnd(ActionUtil.genBatteryLevelEnd(message));
message.setChargedTotalKwh(ActionUtil.genChargedTotalKwh(message));
message.setMetricsNode(MessageUtil.getHostname());
logger.info("generated metric ack message: {}", message);
return message;
}