Skip to content

Commit 0ccfcbe

Browse files
garyrussellartembilan
authored andcommitted
GH-1433: Fix DMLC Monitor Thread Name
Resolves #1433 Used `beanName` instead of `listenerId` (which falls back to `beanName` if `null`). Containers for annotations are not beans per se. **cherry-pick to 2.4.x, 2.3.x**
1 parent d5e7c3f commit 0ccfcbe

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor
156156
private TransactionAttribute transactionAttribute = new DefaultTransactionAttribute();
157157

158158
@Nullable
159-
private String beanName;
159+
private String beanName = "not.a.Spring.bean";
160160

161161
private Executor taskExecutor = new SimpleAsyncTaskExecutor();
162162

spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/DirectMessageListenerContainer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ private void checkStartState() {
391391
protected void doInitialize() {
392392
if (this.taskScheduler == null) {
393393
ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
394-
threadPoolTaskScheduler.setThreadNamePrefix(getBeanName() + "-consumerMonitor-");
394+
threadPoolTaskScheduler.setThreadNamePrefix(getListenerId() + "-consumerMonitor-");
395395
threadPoolTaskScheduler.afterPropertiesSet();
396396
this.taskScheduler = threadPoolTaskScheduler;
397397
}

spring-rabbit/src/test/java/org/springframework/amqp/rabbit/listener/DirectMessageListenerContainerMockTests.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,29 @@ public void testMonitorCancelsAfterTargetChannelChanges() throws Exception {
360360
container.stop();
361361
}
362362

363+
@Test
364+
void monitorTaskThreadName() {
365+
DirectMessageListenerContainer container = new DirectMessageListenerContainer(mock(ConnectionFactory.class));
366+
assertThat(container.getListenerId()).isEqualTo("not.a.Spring.bean");
367+
container.setBeanName("aBean");
368+
assertThat(container.getListenerId()).isEqualTo("aBean");
369+
container.setListenerId("id");
370+
assertThat(container.getListenerId()).isEqualTo("id");
371+
container.afterPropertiesSet();
372+
assertThat(container).extracting("taskScheduler")
373+
.extracting("threadNamePrefix")
374+
.asString()
375+
.startsWith("id-consumerMonitor");
376+
377+
container = new DirectMessageListenerContainer(mock(ConnectionFactory.class));
378+
container.setBeanName("aBean");
379+
container.afterPropertiesSet();
380+
assertThat(container).extracting("taskScheduler")
381+
.extracting("threadNamePrefix")
382+
.asString()
383+
.startsWith("aBean-consumerMonitor");
384+
}
385+
363386
private Envelope envelope(long tag) {
364387
return new Envelope(tag, false, "", "");
365388
}

0 commit comments

Comments
 (0)