mirror of https://github.com/dapr/java-sdk.git
Simplify OTEL integration to reduce deps (#1160)
This commit is contained in:
parent
be05a47fd8
commit
3dc96d7d73
|
@ -20,8 +20,6 @@ import io.dapr.spring.messaging.observation.DaprMessagingObservationDocumentatio
|
||||||
import io.dapr.spring.messaging.observation.DaprMessagingSenderContext;
|
import io.dapr.spring.messaging.observation.DaprMessagingSenderContext;
|
||||||
import io.micrometer.observation.Observation;
|
import io.micrometer.observation.Observation;
|
||||||
import io.micrometer.observation.ObservationRegistry;
|
import io.micrometer.observation.ObservationRegistry;
|
||||||
import io.opentelemetry.api.OpenTelemetry;
|
|
||||||
import io.opentelemetry.context.propagation.TextMapSetter;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.BeanNameAware;
|
import org.springframework.beans.factory.BeanNameAware;
|
||||||
|
@ -33,7 +31,6 @@ import reactor.util.context.Context;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,9 +56,6 @@ public class DaprMessagingTemplate<T> implements DaprMessagingOperations<T>, App
|
||||||
@Nullable
|
@Nullable
|
||||||
private String beanName;
|
private String beanName;
|
||||||
|
|
||||||
@Nullable
|
|
||||||
private OpenTelemetry openTelemetry;
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private ObservationRegistry observationRegistry;
|
private ObservationRegistry observationRegistry;
|
||||||
|
|
||||||
|
@ -109,8 +103,6 @@ public class DaprMessagingTemplate<T> implements DaprMessagingOperations<T>, App
|
||||||
|
|
||||||
observationRegistry = applicationContext.getBeanProvider(ObservationRegistry.class)
|
observationRegistry = applicationContext.getBeanProvider(ObservationRegistry.class)
|
||||||
.getIfUnique(() -> observationRegistry);
|
.getIfUnique(() -> observationRegistry);
|
||||||
this.openTelemetry = this.applicationContext.getBeanProvider(OpenTelemetry.class)
|
|
||||||
.getIfUnique(() -> this.openTelemetry);
|
|
||||||
observationConvention = applicationContext.getBeanProvider(DaprMessagingObservationConvention.class)
|
observationConvention = applicationContext.getBeanProvider(DaprMessagingObservationConvention.class)
|
||||||
.getIfUnique(() -> observationConvention);
|
.getIfUnique(() -> observationConvention);
|
||||||
}
|
}
|
||||||
|
@ -140,10 +132,7 @@ public class DaprMessagingTemplate<T> implements DaprMessagingOperations<T>, App
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean canUseObservation() {
|
private boolean canUseObservation() {
|
||||||
return observationEnabled
|
return observationEnabled && observationRegistry != null && beanName != null;
|
||||||
&& observationRegistry != null
|
|
||||||
&& openTelemetry != null
|
|
||||||
&& beanName != null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Mono<Void> publishEvent(String pubsubName, String topic, T message) {
|
private Mono<Void> publishEvent(String pubsubName, String topic, T message) {
|
||||||
|
@ -154,9 +143,10 @@ public class DaprMessagingTemplate<T> implements DaprMessagingOperations<T>, App
|
||||||
DaprMessagingSenderContext senderContext = DaprMessagingSenderContext.newContext(topic, this.beanName);
|
DaprMessagingSenderContext senderContext = DaprMessagingSenderContext.newContext(topic, this.beanName);
|
||||||
Observation observation = createObservation(senderContext);
|
Observation observation = createObservation(senderContext);
|
||||||
|
|
||||||
return observation.observe(() ->
|
observation.start();
|
||||||
publishEvent(pubsubName, topic, message)
|
|
||||||
.contextWrite(getReactorContext())
|
return publishEvent(pubsubName, topic, message)
|
||||||
|
.contextWrite(getReactorContext(senderContext))
|
||||||
.doOnError(err -> {
|
.doOnError(err -> {
|
||||||
LOGGER.error("Failed to send msg to '{}' topic", topic, err);
|
LOGGER.error("Failed to send msg to '{}' topic", topic, err);
|
||||||
|
|
||||||
|
@ -167,18 +157,11 @@ public class DaprMessagingTemplate<T> implements DaprMessagingOperations<T>, App
|
||||||
LOGGER.trace("Sent msg to '{}' topic", topic);
|
LOGGER.trace("Sent msg to '{}' topic", topic);
|
||||||
|
|
||||||
observation.stop();
|
observation.stop();
|
||||||
})
|
});
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Context getReactorContext() {
|
private Context getReactorContext(DaprMessagingSenderContext senderContext) {
|
||||||
Map<String, String> map = new HashMap<>();
|
return Context.of(senderContext.properties());
|
||||||
TextMapSetter<Map<String, String>> setter = (carrier, key, value) -> map.put(key, value);
|
|
||||||
io.opentelemetry.context.Context otelContext = io.opentelemetry.context.Context.current();
|
|
||||||
|
|
||||||
openTelemetry.getPropagators().getTextMapPropagator().inject(otelContext, map, setter);
|
|
||||||
|
|
||||||
return Context.of(map);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Observation createObservation(DaprMessagingSenderContext senderContext) {
|
private Observation createObservation(DaprMessagingSenderContext senderContext) {
|
||||||
|
|
|
@ -75,16 +75,6 @@
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- OTEL dependencies -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.opentelemetry</groupId>
|
|
||||||
<artifactId>opentelemetry-api</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.opentelemetry</groupId>
|
|
||||||
<artifactId>opentelemetry-context</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Test dependencies -->
|
<!-- Test dependencies -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
|
Loading…
Reference in New Issue