Skip to content

Commit 5243c22

Browse files
committed
Support scheduler qualifier for reactive SubscribingRunnable as well
See gh-20818
1 parent a0c80ff commit 5243c22

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationReactiveSupport.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.springframework.core.ReactiveAdapter;
3939
import org.springframework.core.ReactiveAdapterRegistry;
4040
import org.springframework.lang.Nullable;
41+
import org.springframework.scheduling.SchedulingAwareRunnable;
4142
import org.springframework.scheduling.support.DefaultScheduledTaskObservationConvention;
4243
import org.springframework.scheduling.support.ScheduledTaskObservationContext;
4344
import org.springframework.scheduling.support.ScheduledTaskObservationConvention;
@@ -120,8 +121,10 @@ public static Runnable createSubscriptionRunnable(Method method, Object targetBe
120121

121122
boolean shouldBlock = (scheduled.fixedDelay() > 0 || StringUtils.hasText(scheduled.fixedDelayString()));
122123
Publisher<?> publisher = getPublisherFor(method, targetBean);
123-
Supplier<ScheduledTaskObservationContext> contextSupplier = () -> new ScheduledTaskObservationContext(targetBean, method);
124-
return new SubscribingRunnable(publisher, shouldBlock, subscriptionTrackerRegistry, observationRegistrySupplier, contextSupplier);
124+
Supplier<ScheduledTaskObservationContext> contextSupplier =
125+
() -> new ScheduledTaskObservationContext(targetBean, method);
126+
return new SubscribingRunnable(publisher, shouldBlock, scheduled.scheduler(),
127+
subscriptionTrackerRegistry, observationRegistrySupplier, contextSupplier);
125128
}
126129

127130
/**
@@ -180,30 +183,43 @@ static Publisher<?> getPublisherFor(Method method, Object bean) {
180183
* Utility implementation of {@code Runnable} that subscribes to a {@code Publisher}
181184
* or subscribes-then-blocks if {@code shouldBlock} is set to {@code true}.
182185
*/
183-
static final class SubscribingRunnable implements Runnable {
186+
static final class SubscribingRunnable implements SchedulingAwareRunnable {
184187

185-
private final Publisher<?> publisher;
188+
private static final ScheduledTaskObservationConvention DEFAULT_CONVENTION =
189+
new DefaultScheduledTaskObservationConvention();
186190

187-
private static final ScheduledTaskObservationConvention DEFAULT_CONVENTION = new DefaultScheduledTaskObservationConvention();
191+
private final Publisher<?> publisher;
188192

189193
final boolean shouldBlock;
190194

195+
@Nullable
196+
private final String qualifier;
197+
191198
private final List<Runnable> subscriptionTrackerRegistry;
192199

193200
final Supplier<ObservationRegistry> observationRegistrySupplier;
194201

195202
final Supplier<ScheduledTaskObservationContext> contextSupplier;
196203

197-
SubscribingRunnable(Publisher<?> publisher, boolean shouldBlock, List<Runnable> subscriptionTrackerRegistry,
198-
Supplier<ObservationRegistry> observationRegistrySupplier, Supplier<ScheduledTaskObservationContext> contextSupplier) {
204+
SubscribingRunnable(Publisher<?> publisher, boolean shouldBlock,
205+
@Nullable String qualifier, List<Runnable> subscriptionTrackerRegistry,
206+
Supplier<ObservationRegistry> observationRegistrySupplier,
207+
Supplier<ScheduledTaskObservationContext> contextSupplier) {
199208

200209
this.publisher = publisher;
201210
this.shouldBlock = shouldBlock;
211+
this.qualifier = qualifier;
202212
this.subscriptionTrackerRegistry = subscriptionTrackerRegistry;
203213
this.observationRegistrySupplier = observationRegistrySupplier;
204214
this.contextSupplier = contextSupplier;
205215
}
206216

217+
@Override
218+
@Nullable
219+
public String getQualifier() {
220+
return this.qualifier;
221+
}
222+
207223
@Override
208224
public void run() {
209225
Observation observation = TASKS_SCHEDULED_EXECUTION.observation(null, DEFAULT_CONVENTION,

0 commit comments

Comments
 (0)