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 d0fda92746c1..d0d69f1758eb 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,8 +52,7 @@ protected void doHealthCheck(Health.Builder builder) throws Exception { private @Nullable String getVersion() { return this.rabbitTemplate.execute((channel) -> { - Object version = channel.getConnection().getServerProperties().get("version"); - Assert.state(version != null, "'version' must not be null"); + Object version = channel.getConnection().getServerProperties().getOrDefault("version", "unknown"); 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 9638ac82eade..efa6ffdb3377 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 @@ -78,6 +78,17 @@ void healthWhenConnectionFailsShouldReturnDown() { assertThat(health.getStatus()).isEqualTo(Status.DOWN); } + @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"); + } + private void givenTemplateExecutionWillInvokeCallback() { given(this.rabbitTemplate.execute(any())).willAnswer((invocation) -> { ChannelCallback callback = invocation.getArgument(0);