Skip to content

Commit 40e59f0

Browse files
artembilancppwfs
authored andcommitted
GH-10379: Optimize Observability API usage (#10380)
Fixes: #10379 The `ObservationRegistry.NOOP` still brings some performance overhead. * Fix `MessageProducerSupport` & `SourcePollingChannelAdapter` to check for `isObserved()` before using the `IntegrationObservation` **Auto-cherry-pick to `6.5.x` & `6.4.x`**
1 parent 819af58 commit 40e59f0

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

spring-integration-core/src/main/java/org/springframework/integration/endpoint/MessageProducerSupport.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,17 @@ protected void sendMessage(Message<?> message) {
253253
}
254254

255255
try {
256-
IntegrationObservation.HANDLER.observation(
257-
this.observationConvention,
258-
DefaultMessageReceiverObservationConvention.INSTANCE,
259-
() -> new MessageReceiverContext(message, getComponentName()),
260-
this.observationRegistry)
261-
.observe(() -> this.messagingTemplate.send(getRequiredOutputChannel(), trackMessageIfAny(message)));
256+
if (isObserved()) {
257+
IntegrationObservation.HANDLER.observation(
258+
this.observationConvention,
259+
DefaultMessageReceiverObservationConvention.INSTANCE,
260+
() -> new MessageReceiverContext(message, getComponentName()),
261+
this.observationRegistry)
262+
.observe(() -> sendMessageWithTracking(message));
263+
}
264+
else {
265+
sendMessageWithTracking(message);
266+
}
262267
}
263268
catch (RuntimeException ex) {
264269
if (!sendErrorMessageIfNecessary(message, ex)) {
@@ -267,6 +272,10 @@ protected void sendMessage(Message<?> message) {
267272
}
268273
}
269274

275+
private void sendMessageWithTracking(Message<?> message) {
276+
this.messagingTemplate.send(getRequiredOutputChannel(), trackMessageIfAny(message));
277+
}
278+
270279
protected void subscribeToPublisher(Publisher<? extends Message<?>> publisher) {
271280
MessageChannel channelForSubscription = getRequiredOutputChannel();
272281

0 commit comments

Comments
 (0)