mirror of
https://github.com/jlengrand/quarkus.git
synced 2026-03-10 08:41:22 +00:00
Veto the MetricDecorator is the metrics are not enabled
This avoids a depending on metrics directly.
This commit is contained in:
@@ -10,6 +10,7 @@ import io.smallrye.reactive.messaging.annotations.Channel;
|
|||||||
import io.smallrye.reactive.messaging.annotations.Emitter;
|
import io.smallrye.reactive.messaging.annotations.Emitter;
|
||||||
import io.smallrye.reactive.messaging.annotations.Merge;
|
import io.smallrye.reactive.messaging.annotations.Merge;
|
||||||
import io.smallrye.reactive.messaging.annotations.OnOverflow;
|
import io.smallrye.reactive.messaging.annotations.OnOverflow;
|
||||||
|
import io.smallrye.reactive.messaging.metrics.MetricDecorator;
|
||||||
|
|
||||||
public final class DotNames {
|
public final class DotNames {
|
||||||
|
|
||||||
@@ -27,6 +28,8 @@ public final class DotNames {
|
|||||||
static final DotName MERGE = DotName.createSimple(Merge.class.getName());
|
static final DotName MERGE = DotName.createSimple(Merge.class.getName());
|
||||||
static final DotName BROADCAST = DotName.createSimple(Broadcast.class.getName());
|
static final DotName BROADCAST = DotName.createSimple(Broadcast.class.getName());
|
||||||
|
|
||||||
|
static final DotName METRIC_DECORATOR = DotName.createSimple(MetricDecorator.class.getName());
|
||||||
|
|
||||||
private DotNames() {
|
private DotNames() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import java.util.Map;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import javax.enterprise.context.Dependent;
|
import javax.enterprise.context.Dependent;
|
||||||
|
import javax.enterprise.inject.Vetoed;
|
||||||
import javax.enterprise.inject.spi.DeploymentException;
|
import javax.enterprise.inject.spi.DeploymentException;
|
||||||
|
|
||||||
import org.eclipse.microprofile.config.Config;
|
import org.eclipse.microprofile.config.Config;
|
||||||
@@ -61,7 +62,6 @@ import io.quarkus.smallrye.reactivemessaging.runtime.ReactiveMessagingConfigurat
|
|||||||
import io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle;
|
import io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingLifecycle;
|
||||||
import io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingRecorder;
|
import io.quarkus.smallrye.reactivemessaging.runtime.SmallRyeReactiveMessagingRecorder;
|
||||||
import io.smallrye.reactive.messaging.Invoker;
|
import io.smallrye.reactive.messaging.Invoker;
|
||||||
import io.smallrye.reactive.messaging.metrics.MetricDecorator;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Martin Kouba
|
* @author Martin Kouba
|
||||||
@@ -236,10 +236,27 @@ public class SmallRyeReactiveMessagingProcessor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@BuildStep
|
@BuildStep
|
||||||
public void enableMetrics(Capabilities capabilities, ReactiveMessagingConfiguration configuration,
|
public void enableMetrics(BuildProducer<AnnotationsTransformerBuildItem> transformers,
|
||||||
BuildProducer<AdditionalBeanBuildItem> beans) {
|
Capabilities capabilities, ReactiveMessagingConfiguration configuration) {
|
||||||
if (capabilities.isCapabilityPresent(Capabilities.METRICS) && configuration.metricsEnabled) {
|
boolean isMetricEnabled = capabilities.isCapabilityPresent(Capabilities.METRICS) && configuration.metricsEnabled;
|
||||||
beans.produce(new AdditionalBeanBuildItem(MetricDecorator.class.getName()));
|
if (!isMetricEnabled) {
|
||||||
|
LOGGER.info("Metric is disabled - vetoing the MetricDecorator");
|
||||||
|
// We veto the Metric Decorator
|
||||||
|
AnnotationsTransformerBuildItem veto = new AnnotationsTransformerBuildItem(new AnnotationsTransformer() {
|
||||||
|
@Override
|
||||||
|
public boolean appliesTo(AnnotationTarget.Kind kind) {
|
||||||
|
return kind == org.jboss.jandex.AnnotationTarget.Kind.CLASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void transform(AnnotationsTransformer.TransformationContext ctx) {
|
||||||
|
if (ctx.isClass() && ctx.getTarget().asClass().name().equals(
|
||||||
|
io.quarkus.smallrye.reactivemessaging.deployment.DotNames.METRIC_DECORATOR)) {
|
||||||
|
ctx.transform().add(Vetoed.class).done();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
transformers.produce(veto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,9 +51,5 @@
|
|||||||
<artifactId>microprofile-reactive-messaging-tck</artifactId>
|
<artifactId>microprofile-reactive-messaging-tck</artifactId>
|
||||||
<version>${microprofile-reactive-messaging-api.version}</version>
|
<version>${microprofile-reactive-messaging-api.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-smallrye-metrics</artifactId>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
Reference in New Issue
Block a user