Closeable, AutoCloseablepublic abstract class Sender
extends zipkin2.Component
Unless mentioned otherwise, senders are not thread-safe. They were designed to be used by
AsyncReporter, which has a single reporting thread.
Those looking to initialize eagerly should call Component.check(). This can be used to reduce
latency on the first send operation, or to fail fast.
Implementation notes
The parameter is a list of encoded spans as opposed to an encoded message. This allows implementations flexibility on how to encode spans into a message. For example, a large span might need to be sent as a separate message to avoid kafka limits. Also, logging transports like scribe will likely write each span as a separate log line.
This accepts a list of encoded spans, as opposed a list of
spans like Span. This allows senders to be re-usable as model shapes change. This
also allows them to use their most natural message type. For example, kafka would more naturally
send messages as byte arrays.
| Constructor | Description |
|---|---|
Sender() |
| Modifier and Type | Method | Description |
|---|---|---|
abstract zipkin2.codec.Encoding |
encoding() |
Returns the encoding this sender requires spans to have.
|
abstract int |
messageMaxBytes() |
Maximum bytes sendable per message including overhead.
|
int |
messageSizeInBytes(int encodedSizeInBytes) |
Like
messageSizeInBytes(List), except for a single-span. |
abstract int |
messageSizeInBytes(List<byte[]> encodedSpans) |
Before invoking
sendSpans(List), callers must consider message overhead, which
might be more than encoding overhead. |
abstract zipkin2.Call<Void> |
sendSpans(List<byte[]> encodedSpans) |
Sends a list of encoded spans to a transport such as http or Kafka.
|
public abstract zipkin2.codec.Encoding encoding()
public abstract int messageMaxBytes()
messageSizeInBytes(List)public abstract int messageSizeInBytes(List<byte[]> encodedSpans)
sendSpans(List), callers must consider message overhead, which
might be more than encoding overhead. This is used to not exceed messageMaxBytes().
Note this is not always Encoding.listSizeInBytes(List), as some senders have
inefficient list encoding. For example, Scribe base64's then tags each span with a category.
public int messageSizeInBytes(int encodedSizeInBytes)
messageSizeInBytes(List), except for a single-span. This is used to ensure a span
is never accepted that can never be sent.
Always override this, which is only abstract as added after version 2.0
encodedSizeInBytes - the encoded size of a spanpublic abstract zipkin2.Call<Void> sendSpans(List<byte[]> encodedSpans)
encodedSpans - list of encoded spans.IllegalStateException - if close was called.Copyright © 2016–2018 OpenZipkin. All rights reserved.