Class RabbitMQSender

  • All Implemented Interfaces:
    Closeable, BytesMessageSender

    public final class RabbitMQSender
    extends Sender
    This sends (usually json v2) encoded spans to a RabbitMQ queue.

    Usage

    This type is designed for the async reporter.

    Here's a simple configuration, configured for json:

    
     sender = RabbitMQSender.create("localhost:5672");
     

    Here's an example with an explicit SSL connection factory and protocol buffers encoding:

    
     connectionFactory = new ConnectionFactory();
     connectionFactory.setHost("localhost");
     connectionFactory.setPort(5671);
     connectionFactory.useSslProtocol();
     sender = RabbitMQSender.newBuilder()
       .connectionFactory(connectionFactory)
       .encoding(Encoding.PROTO3)
       .build();
     

    Compatibility with Zipkin Server

    Zipkin server should be v2.1 or higher.

    Implementation Notes

    The sender does not use RabbitMQ Publisher Confirms, so messages considered sent may not necessarily be received by consumers in case of RabbitMQ failure.

    This sender is thread-safe: a channel is created for each thread that calls send(List).