From 88ee0f44573b4bcc85c68260094e57b9575c737e Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Fri, 15 Feb 2019 17:41:17 -0500 Subject: [PATCH] GH-905: Fix @RabbitListener Thread Names Fixes https://github.com/spring-projects/spring-amqp/issues/905 Default container thread names are based on the bean name. `@RabbitListener` containers are not beans; use `getListenerId()` instead (which falls back to bean name for other containers). **cherry-pick to all supported branches** (cherry picked from commit 5f4c60a969e42b9b89b6dbb758b62ebfe970f295) # Conflicts: # spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java --- .../rabbit/listener/AbstractMessageListenerContainer.java | 4 ++-- .../rabbit/annotation/EnableRabbitIntegrationTests.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java index 98754417..31537e92 100644 --- a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java +++ b/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/listener/AbstractMessageListenerContainer.java @@ -1087,8 +1087,8 @@ public abstract class AbstractMessageListenerContainer extends RabbitAccessor if (!this.isExposeListenerChannel() && this.transactionManager != null) { logger.warn("exposeListenerChannel=false is ignored when using a TransactionManager"); } - if (!this.taskExecutorSet && StringUtils.hasText(this.getBeanName())) { - this.taskExecutor = new SimpleAsyncTaskExecutor(this.getBeanName() + "-"); + if (!this.taskExecutorSet && StringUtils.hasText(getListenerId())) { + this.taskExecutor = new SimpleAsyncTaskExecutor(getListenerId() + "-"); this.taskExecutorSet = true; } if (this.transactionManager != null) { diff --git a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java index cab3f87b..cb85dd20 100644 --- a/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java +++ b/spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java @@ -222,7 +222,7 @@ public class EnableRabbitIntegrationTests { @Test public void autoDeclare() { - assertEquals("FOO", rabbitTemplate.convertSendAndReceive("auto.exch", "auto.rk", "foo")); + assertEquals("FOOthreadNamer-1", rabbitTemplate.convertSendAndReceive("auto.exch", "auto.rk", "foo")); } @Test @@ -757,13 +757,13 @@ public class EnableRabbitIntegrationTests { public static class MyService { - @RabbitListener(bindings = @QueueBinding( + @RabbitListener(id = "threadNamer", bindings = @QueueBinding( value = @Queue(value = "auto.declare", autoDelete = "true"), exchange = @Exchange(value = "auto.exch", autoDelete = "true"), key = "auto.rk") ) public String handleWithDeclare(String foo) { - return foo.toUpperCase(); + return foo.toUpperCase() + Thread.currentThread().getName(); } @RabbitListener(queuesToDeclare = @Queue(name = "${jjjj:test.simple.declare}", durable = "true"))