1616
1717package com .splunk .opentelemetry .opamp ;
1818
19+ import static io .opentelemetry .opamp .client .internal .request .service .HttpRequestService .DEFAULT_DELAY_BETWEEN_REQUESTS ;
20+ import static io .opentelemetry .opamp .client .internal .request .service .HttpRequestService .DEFAULT_DELAY_BETWEEN_RETRIES ;
1921import static io .opentelemetry .sdk .autoconfigure .AutoConfigureUtil .getConfig ;
2022import static io .opentelemetry .sdk .autoconfigure .AutoConfigureUtil .getResource ;
2123import static io .opentelemetry .semconv .ServiceAttributes .SERVICE_INSTANCE_ID ;
3436import io .opentelemetry .opamp .client .OpampClient ;
3537import io .opentelemetry .opamp .client .OpampClientBuilder ;
3638import io .opentelemetry .opamp .client .internal .connectivity .http .OkHttpSender ;
39+ import io .opentelemetry .opamp .client .internal .request .delay .PeriodicDelay ;
3740import io .opentelemetry .opamp .client .internal .request .service .HttpRequestService ;
3841import io .opentelemetry .opamp .client .internal .response .MessageData ;
3942import io .opentelemetry .sdk .autoconfigure .AutoConfiguredOpenTelemetrySdk ;
4043import io .opentelemetry .sdk .autoconfigure .spi .ConfigProperties ;
4144import io .opentelemetry .sdk .resources .Resource ;
45+ import java .time .Duration ;
4246import java .util .logging .Logger ;
4347import opamp .proto .ServerErrorResponse ;
4448import org .jetbrains .annotations .Nullable ;
@@ -49,6 +53,7 @@ public class OpampActivator implements AgentListener {
4953
5054 private static final String OP_AMP_ENABLED_PROPERTY = "splunk.opamp.enabled" ;
5155 private static final String OP_AMP_ENDPOINT = "splunk.opamp.endpoint" ;
56+ private static final String OP_AMP_POLLING_INTERVAL = "splunk.opamp.polling.interval" ;
5257
5358 @ Override
5459 public void afterAgent (AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk ) {
@@ -58,11 +63,15 @@ public void afterAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetr
5863 }
5964
6065 Resource resource = getResource (autoConfiguredOpenTelemetrySdk );
66+ long pollingDuration =
67+ config .getLong (
68+ OP_AMP_POLLING_INTERVAL , DEFAULT_DELAY_BETWEEN_REQUESTS .getNextDelay ().toMillis ());
6169
6270 String endpoint = config .getString (OP_AMP_ENDPOINT );
6371 startOpampClient (
6472 endpoint ,
6573 resource ,
74+ pollingDuration ,
6675 new OpampClient .Callbacks () {
6776 @ Override
6877 public void onConnect (OpampClient opampClient ) {}
@@ -84,12 +93,21 @@ public void onMessage(OpampClient opampClient, MessageData messageData) {}
8493 }
8594
8695 static OpampClient startOpampClient (
87- String endpoint , Resource resource , OpampClient .Callbacks callbacks ) {
96+ String endpoint ,
97+ Resource resource ,
98+ long pollingDurationMillis ,
99+ OpampClient .Callbacks callbacks ) {
88100
89101 OpampClientBuilder builder = OpampClient .builder ();
90- builder .enableRemoteConfig ();
102+ // TODO: Uncomment once we are able to report our effective config
103+ // builder.enableEffectiveConfigReporting();
91104 if (endpoint != null ) {
92- builder .setRequestService (HttpRequestService .create (OkHttpSender .create (endpoint )));
105+ PeriodicDelay pollingDelay =
106+ PeriodicDelay .ofFixedDuration (Duration .ofMillis (pollingDurationMillis ));
107+ OkHttpSender okhttp = OkHttpSender .create (endpoint );
108+ HttpRequestService httpSender =
109+ HttpRequestService .create (okhttp , pollingDelay , DEFAULT_DELAY_BETWEEN_RETRIES );
110+ builder .setRequestService (httpSender );
93111 }
94112 addIdentifying (builder , resource , DEPLOYMENT_ENVIRONMENT_NAME );
95113 addIdentifying (builder , resource , SERVICE_NAME );
0 commit comments