diff --git a/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/health/RabbitHealthIndicator.java b/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/health/RabbitHealthIndicator.java index d0fda92746c..045ab2f89c2 100644 --- a/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/health/RabbitHealthIndicator.java +++ b/module/spring-boot-amqp/src/main/java/org/springframework/boot/amqp/health/RabbitHealthIndicator.java @@ -52,7 +52,7 @@ public class RabbitHealthIndicator extends AbstractHealthIndicator { private @Nullable String getVersion() { return this.rabbitTemplate.execute((channel) -> { - Object version = channel.getConnection().getServerProperties().get("version"); + Object version = channel.getConnection().getServerProperties().getOrDefault("version", "unknown"); Assert.state(version != null, "'version' must not be null"); return version.toString(); }); diff --git a/module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/health/RabbitHealthIndicatorTests.java b/module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/health/RabbitHealthIndicatorTests.java index 9638ac82ead..5ce2f8e64a2 100644 --- a/module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/health/RabbitHealthIndicatorTests.java +++ b/module/spring-boot-amqp/src/test/java/org/springframework/boot/amqp/health/RabbitHealthIndicatorTests.java @@ -70,6 +70,17 @@ class RabbitHealthIndicatorTests { assertThat(health.getDetails()).containsEntry("version", "123"); } + @Test + void healthWhenVersionIsMissingShouldReturnUpWithUnknownVersion() { + givenTemplateExecutionWillInvokeCallback(); + Connection connection = mock(Connection.class); + given(this.channel.getConnection()).willReturn(connection); + given(connection.getServerProperties()).willReturn(Collections.emptyMap()); + Health health = new RabbitHealthIndicator(this.rabbitTemplate).health(); + assertThat(health.getStatus()).isEqualTo(Status.UP); + assertThat(health.getDetails()).containsEntry("version", "unknown"); + } + @Test void healthWhenConnectionFailsShouldReturnDown() { givenTemplateExecutionWillInvokeCallback();