Search in sources :

Example 1 with SendResult

use of com.metamx.tranquility.beam.SendResult in project storm by apache.

the class DruidBeamState method update.

public List<E> update(List<TridentTuple> tuples, TridentCollector collector) {
    List<E> events = new ArrayList<>(tuples.size());
    for (TridentTuple tuple : tuples) {
        events.add(druidEventMapper.getEvent(tuple));
    }
    LOG.info("Sending [{}] events", events.size());
    scala.collection.immutable.List<E> scalaList = scala.collection.JavaConversions.collectionAsScalaIterable(events).toList();
    Collection<Future<SendResult>> futureList = scala.collection.JavaConversions.asJavaCollection(beam.sendAll(scalaList));
    List<E> discardedEvents = new ArrayList<>();
    int index = 0;
    for (Future<SendResult> future : futureList) {
        try {
            SendResult result = Await.result(future);
            if (!result.sent()) {
                discardedEvents.add(events.get(index));
            }
        } catch (Exception e) {
            LOG.error("Failed in writing messages to Druid", e);
        }
        index++;
    }
    return discardedEvents;
}
Also used : ArrayList(java.util.ArrayList) SendResult(com.metamx.tranquility.beam.SendResult) Future(com.twitter.util.Future) TridentTuple(org.apache.storm.trident.tuple.TridentTuple)

Aggregations

SendResult (com.metamx.tranquility.beam.SendResult)1 Future (com.twitter.util.Future)1 ArrayList (java.util.ArrayList)1 TridentTuple (org.apache.storm.trident.tuple.TridentTuple)1