@Override public void handleDelivery( String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) { metrics.incrementMessages(); this.collector.acceptSpans(body, NOOP); } }
@Override public void processRecords(ProcessRecordsInput processRecordsInput) { for (Record record : processRecordsInput.getRecords()) { collector.acceptSpans(record.getData().array(), NOOP); } }
public void acceptSpans(byte[] serialized, Callback<Void> callback) { BytesDecoder<Span> decoder; try { decoder = SpanBytesDecoderDetector.decoderForListMessage(serialized); } catch (RuntimeException e) { metrics.incrementBytes(serialized.length); callback.onError(errorReading(e)); return; } acceptSpans(serialized, decoder, callback); }
collector.acceptSpans(bytes, NOOP);
@Override public void handle(HttpServerExchange exchange, byte[] body) { String encoding = exchange.getRequestHeaders().getFirst(CONTENT_ENCODING); if (encoding != null && encoding.contains("gzip")) { try { body = gunzip(body); } catch (IOException e) { metrics.incrementMessagesDropped(); exchange .setStatusCode(400) .getResponseSender() .send("Cannot gunzip spans: " + e.getMessage() + "\n"); return; } } collector.acceptSpans( body, decoder, new Callback<Void>() { @Override public void onSuccess(Void value) { exchange.setStatusCode(202).getResponseSender().close(); } @Override public void onError(Throwable t) { error(exchange, t); } }); } }
consumer.acceptSpans( body, decoder,
@Override public void run() { ConsumerIterator<byte[], byte[]> messages = stream.iterator(); while (messages.hasNext()) { byte[] bytes = messages.next().message(); metrics.incrementMessages(); if (bytes.length < 2) { // need two bytes to check if protobuf metrics.incrementMessagesDropped(); continue; } // If we received legacy single-span encoding, decode it into a singleton list if (!protobuf3(bytes) && bytes[0] <= 16 && bytes[0] != 12 /* thrift, but not a list */) { try { metrics.incrementBytes(bytes.length); Span span = SpanBytesDecoder.THRIFT.decodeOne(bytes); collector.accept(Collections.singletonList(span), NOOP); } catch (RuntimeException e) { metrics.incrementMessagesDropped(); } } else { collector.acceptSpans(bytes, NOOP); } } }