@Override public void process(final EventMessage event) { // event must be forwarded to each listener subscribed to its topic final String channel = event.getTopic(); for (final Topic topic : topicMapping.keySet()) { if (matches(topic, channel)) { processEvent(topicMapping.get(topic), event); } } }
public EndpointMessage(final EventMessage eventMessage) { super(); timestamp = eventMessage.getTimestamp(); message = eventMessage.getMessage(); topic = eventMessage.getTopic(); event = eventMessage; }
/** * If some OpenTSDB datapoint entry fails OpenTSDB returns the whole DP representation. We can use * the returned DP to tell which EventMessage failed and try to resend it later. * * @param response Response to the bulk PUT. * @param eventsToProcess Event Messages originally sent to OpenTSDB * @return list of Event Messages that were saved in OpenTSDB */ private List<EventMessage> processResponse(final BatchProcessResponse response, final List<EventMessage> eventsToProcess) { if (response == null || response.hasAllItemsRejected()) { return eventsToProcess; } else if (response.getErrorResponse() == null) { return Collections.emptyList(); } else { final List<EventMessage> aux = new ArrayList<EventMessage>(); for (final EventMessage event : eventsToProcess) { for (final OpenTSDBErrorResponse.Error error : response.getErrorResponse().getErrors()) { // compare by timestamp and measure name. Measure name in Sentilo is a unique string for // provider and sensor, so we can safely identify which data point belongs to which event // message here. if (event.getTime() == error.getDatapoint().getTimestamp() && event.getTopic().equals(error.getDatapoint().getMetric())) { aux.add(event); } } } return aux; } }
final EndpointMessage endpointMessage = new EndpointMessage(eventMessage); switch (getTopicType(eventMessage.getTopic())) { case DATA: final Observation observation = endpointMessage.getObservation(); } catch (final NoValidEventMessageException e) { LOG_REJECTED.warn("Message {} published on topic {} has been rejected because it is not valid", eventMessage.toString(), eventMessage.getTopic());