Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • A new interface ClientTelemetryContext to hold the request and telemetry (just the push interval) context:
    Code Block
    languagejava
    titleClientTelemetryContext
    package org.apache.kafka.server.telemetry;
    
    import org.apache.kafka.server.authorizer.AuthorizableRequestContext;
    
    /**
     * Context provided to {@link ClientTelemetryReceiver} implementations when receiving client metrics.
     */
    public interface ClientTelemetryContext {
    
        /**
         * The interval defined via <code>metrics.interval</code> in the client metrics subscription
         * @return The interval in milliseconds
         */
        int pushIntervalMs();
    
        /**
         * The context associated with this request
         * @return The AuthorizableRequestContext associated with this request
         */
        AuthorizableRequestContext authorizableRequestContext();
    }


  • A new interface, ClientTelemetryExporter, that works like ClientTelemetryReceiver but uses ClientTelemetryContext.

    Code Block
    languagejava
    package org.apache.kafka.server.telemetry;
    
    /**
     * {@code ClientTelemetryExporter} defines the behaviour for telemetry exporter on the broker side
     * which receives client telemetry metrics.
     */
    public interface ClientTelemetryExporter {
    
        /**
         * Called by the broker when a client reports telemetry metrics. The associated telemetry context
         * can be used by the metrics plugin to retrieve additional client information such as client ids,
         * endpoints or the push interval.
         * <p>
         * This method may be called from the request handling thread, and as such should avoid blocking.
         *
         * @param context the client telemetry context for the corresponding {@code PushTelemetryRequest}
         *                api call.
         * @param payload the encoded telemetry payload as sent by the client.
         */
         void exportMetrics(ClientTelemetryContext context, ClientTelemetryPayload payload);
    } 


  • A new interface, ClientTelemetryExporterProvider, that works like ClientTelemetry but provides a ClientTelemetryExporter instead of ClientTelemetryReceiver

...