Skip to content

Commit 09652cb

Browse files
committed
Polish "Set virtual thread names for RabbitMQ and Pulsar"
See gh-39958
1 parent ecda754 commit 09652cb

File tree

4 files changed

+22
-47
lines changed

4 files changed

+22
-47
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/amqp/RabbitAnnotationDrivenConfiguration.java

+2-12
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,6 @@
4747
@ConditionalOnClass(EnableRabbit.class)
4848
class RabbitAnnotationDrivenConfiguration {
4949

50-
/**
51-
* Default Name of the thread created for simple rabbit listener.
52-
*/
53-
public static final String THREADNAME_RABBIT_SIMPLE = "rabbit-simple-";
54-
55-
/**
56-
* Default Name of the thread created for direct rabbit listener.
57-
*/
58-
public static final String THREADNAME_RABBIT_DIRECT = "rabbit-direct-";
59-
6050
private final ObjectProvider<MessageConverter> messageConverter;
6151

6252
private final ObjectProvider<MessageRecoverer> messageRecoverer;
@@ -86,7 +76,7 @@ SimpleRabbitListenerContainerFactoryConfigurer simpleRabbitListenerContainerFact
8676
@ConditionalOnThreading(Threading.VIRTUAL)
8777
SimpleRabbitListenerContainerFactoryConfigurer simpleRabbitListenerContainerFactoryConfigurerVirtualThreads() {
8878
SimpleRabbitListenerContainerFactoryConfigurer configurer = simpleListenerConfigurer();
89-
configurer.setTaskExecutor(new VirtualThreadTaskExecutor(THREADNAME_RABBIT_SIMPLE));
79+
configurer.setTaskExecutor(new VirtualThreadTaskExecutor("rabbit-simple-"));
9080
return configurer;
9181
}
9282

@@ -115,7 +105,7 @@ DirectRabbitListenerContainerFactoryConfigurer directRabbitListenerContainerFact
115105
@ConditionalOnThreading(Threading.VIRTUAL)
116106
DirectRabbitListenerContainerFactoryConfigurer directRabbitListenerContainerFactoryConfigurerVirtualThreads() {
117107
DirectRabbitListenerContainerFactoryConfigurer configurer = directListenerConfigurer();
118-
configurer.setTaskExecutor(new VirtualThreadTaskExecutor(THREADNAME_RABBIT_DIRECT));
108+
configurer.setTaskExecutor(new VirtualThreadTaskExecutor("rabbit-direct-"));
119109
return configurer;
120110
}
121111

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfiguration.java

+4-15
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,9 @@
7373
@Import(PulsarConfiguration.class)
7474
public class PulsarAutoConfiguration {
7575

76-
/**
77-
* Default Name of the thread created for pulsar consumer.
78-
*/
79-
public static final String THREADNAME_PULSAR_CONSUMER = "pulsar-consumer-";
76+
private final PulsarProperties properties;
8077

81-
/**
82-
* Default Name of the thread created for pulsar task executor.
83-
*/
84-
public static final String THREADNAME_PULSAR_TASKEXECUTOR = "pulsar-taskexecutor-";
85-
86-
private PulsarProperties properties;
87-
88-
private PulsarPropertiesMapper propertiesMapper;
78+
private final PulsarPropertiesMapper propertiesMapper;
8979

9080
PulsarAutoConfiguration(PulsarProperties properties) {
9181
this.properties = properties;
@@ -168,7 +158,7 @@ ConcurrentPulsarListenerContainerFactory<?> pulsarListenerContainerFactory(
168158
containerProperties.setSchemaResolver(schemaResolver);
169159
containerProperties.setTopicResolver(topicResolver);
170160
if (Threading.VIRTUAL.isActive(environment)) {
171-
containerProperties.setConsumerTaskExecutor(new VirtualThreadTaskExecutor(THREADNAME_PULSAR_CONSUMER));
161+
containerProperties.setConsumerTaskExecutor(new VirtualThreadTaskExecutor("pulsar-consumer-"));
172162
}
173163
this.propertiesMapper.customizeContainerProperties(containerProperties);
174164
return new ConcurrentPulsarListenerContainerFactory<>(pulsarConsumerFactory, containerProperties);
@@ -199,8 +189,7 @@ DefaultPulsarReaderContainerFactory<?> pulsarReaderContainerFactory(PulsarReader
199189
PulsarReaderContainerProperties readerContainerProperties = new PulsarReaderContainerProperties();
200190
readerContainerProperties.setSchemaResolver(schemaResolver);
201191
if (Threading.VIRTUAL.isActive(environment)) {
202-
readerContainerProperties
203-
.setReaderTaskExecutor(new VirtualThreadTaskExecutor(THREADNAME_PULSAR_TASKEXECUTOR));
192+
readerContainerProperties.setReaderTaskExecutor(new VirtualThreadTaskExecutor("pulsar-reader-"));
204193
}
205194
this.propertiesMapper.customizeReaderContainerProperties(readerContainerProperties);
206195
return new DefaultPulsarReaderContainerFactory<>(pulsarReaderFactory, readerContainerProperties);

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/amqp/RabbitAutoConfigurationTests.java

+8-10
Original file line numberDiff line numberDiff line change
@@ -552,11 +552,10 @@ void shouldConfigureVirtualThreadsForSimpleListener() {
552552
.getBean("rabbitListenerContainerFactory", SimpleRabbitListenerContainerFactory.class);
553553
assertThat(rabbitListenerContainerFactory).extracting("taskExecutor")
554554
.isInstanceOf(VirtualThreadTaskExecutor.class);
555-
final var taskExecutor = ReflectionTestUtils.getField(rabbitListenerContainerFactory, "taskExecutor");
556-
final var virtualThread = ReflectionTestUtils.getField(taskExecutor, "virtualThreadFactory");
557-
final var threadCreated = ((ThreadFactory) virtualThread).newThread(mock(Runnable.class));
558-
assertThat(threadCreated.getName())
559-
.containsPattern(RabbitAnnotationDrivenConfiguration.THREADNAME_RABBIT_SIMPLE + "[0-9]*");
555+
Object taskExecutor = ReflectionTestUtils.getField(rabbitListenerContainerFactory, "taskExecutor");
556+
Object virtualThread = ReflectionTestUtils.getField(taskExecutor, "virtualThreadFactory");
557+
Thread threadCreated = ((ThreadFactory) virtualThread).newThread(mock(Runnable.class));
558+
assertThat(threadCreated.getName()).containsPattern("rabbit-simple-[0-9]+");
560559

561560
});
562561
}
@@ -570,11 +569,10 @@ void shouldConfigureVirtualThreadsForDirectListener() {
570569
DirectRabbitListenerContainerFactoryConfigurer.class);
571570
assertThat(rabbitListenerContainerFactory).extracting("taskExecutor")
572571
.isInstanceOf(VirtualThreadTaskExecutor.class);
573-
final var taskExecutor = ReflectionTestUtils.getField(rabbitListenerContainerFactory, "taskExecutor");
574-
final var virtualThread = ReflectionTestUtils.getField(taskExecutor, "virtualThreadFactory");
575-
final var threadCreated = ((ThreadFactory) virtualThread).newThread(mock(Runnable.class));
576-
assertThat(threadCreated.getName())
577-
.containsPattern(RabbitAnnotationDrivenConfiguration.THREADNAME_RABBIT_DIRECT + "[0-9]*");
572+
Object taskExecutor = ReflectionTestUtils.getField(rabbitListenerContainerFactory, "taskExecutor");
573+
Object virtualThread = ReflectionTestUtils.getField(taskExecutor, "virtualThreadFactory");
574+
Thread threadCreated = ((ThreadFactory) virtualThread).newThread(mock(Runnable.class));
575+
assertThat(threadCreated.getName()).containsPattern("rabbit-direct-[0-9]+");
578576

579577
});
580578
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java

+8-10
Original file line numberDiff line numberDiff line change
@@ -508,11 +508,10 @@ void whenVirtualThreadsAreEnabledOnJava21AndLaterListenerContainerShouldUseVirtu
508508
.getBean(ConcurrentPulsarListenerContainerFactory.class);
509509
assertThat(factory.getContainerProperties().getConsumerTaskExecutor())
510510
.isInstanceOf(VirtualThreadTaskExecutor.class);
511-
final var taskExecutor = factory.getContainerProperties().getConsumerTaskExecutor();
512-
final var virtualThread = ReflectionTestUtils.getField(taskExecutor, "virtualThreadFactory");
513-
final var threadCreated = ((ThreadFactory) virtualThread).newThread(mock(Runnable.class));
514-
assertThat(threadCreated.getName())
515-
.containsPattern(PulsarAutoConfiguration.THREADNAME_PULSAR_CONSUMER + "[0-9]*");
511+
Object taskExecutor = factory.getContainerProperties().getConsumerTaskExecutor();
512+
Object virtualThread = ReflectionTestUtils.getField(taskExecutor, "virtualThreadFactory");
513+
Thread threadCreated = ((ThreadFactory) virtualThread).newThread(mock(Runnable.class));
514+
assertThat(threadCreated.getName()).containsPattern("pulsar-consumer-[0-9]+");
516515
});
517516
}
518517

@@ -568,11 +567,10 @@ void whenVirtualThreadsAreEnabledOnJava21AndLaterReaderShouldUseVirtualThreads()
568567
.getBean(DefaultPulsarReaderContainerFactory.class);
569568
assertThat(factory.getContainerProperties().getReaderTaskExecutor())
570569
.isInstanceOf(VirtualThreadTaskExecutor.class);
571-
final var taskExecutor = factory.getContainerProperties().getReaderTaskExecutor();
572-
final var virtualThread = ReflectionTestUtils.getField(taskExecutor, "virtualThreadFactory");
573-
final var threadCreated = ((ThreadFactory) virtualThread).newThread(mock(Runnable.class));
574-
assertThat(threadCreated.getName())
575-
.containsPattern(PulsarAutoConfiguration.THREADNAME_PULSAR_TASKEXECUTOR + "[0-9]*");
570+
Object taskExecutor = factory.getContainerProperties().getReaderTaskExecutor();
571+
Object virtualThread = ReflectionTestUtils.getField(taskExecutor, "virtualThreadFactory");
572+
Thread threadCreated = ((ThreadFactory) virtualThread).newThread(mock(Runnable.class));
573+
assertThat(threadCreated.getName()).containsPattern("pulsar-reader-[0-9]+");
576574
});
577575
}
578576

0 commit comments

Comments
 (0)