in app/metrics/src/main/java/com/googlecodesamples/cloud/jss/metrics/action/Ack.java [111:129]
private MetricsAck genAckMessage(Event event, float processTime, Timestamp publishTime) {
logger.info("event: {}, processTime {}, publishTime {}", event, processTime, publishTime);
MetricsAck message = new MetricsAck();
// 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.setMetricsNode(MessageUtil.getHostname());
logger.info("generated metric ack message: {}", message);
return message;
}