diff --git a/spring-messaging/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java b/spring-messaging/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java index dff4c9ced00e..ec6793d53a3e 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java @@ -331,7 +331,7 @@ public void setHeader(String name, @Nullable Object value) { protected void verifyType(@Nullable String headerName, @Nullable Object headerValue) { if (headerName != null && headerValue != null) { if (MessageHeaders.ERROR_CHANNEL.equals(headerName) || - MessageHeaders.REPLY_CHANNEL.endsWith(headerName)) { + MessageHeaders.REPLY_CHANNEL.equals(headerName)) { if (!(headerValue instanceof MessageChannel || headerValue instanceof String)) { throw new IllegalArgumentException( "'" + headerName + "' header value must be a MessageChannel or String"); diff --git a/spring-messaging/src/test/java/org/springframework/messaging/support/MessageBuilderTests.java b/spring-messaging/src/test/java/org/springframework/messaging/support/MessageBuilderTests.java index 42aae2a3715f..5714a587a91b 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/support/MessageBuilderTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/support/MessageBuilderTests.java @@ -34,6 +34,7 @@ /** * @author Mark Fisher * @author Rossen Stoyanchev + * @author Mengqi Xu */ class MessageBuilderTests { @@ -238,4 +239,21 @@ void buildMultipleMessages() { assertThat(message3.getHeaders().get("foo")).isEqualTo("bar3"); } + @Test + void buildReplyChannelHeaderMessage() { + MessageHeaderAccessor headerAccessor = new MessageHeaderAccessor(); + MessageBuilder messageBuilder = MessageBuilder.withPayload("payload").setHeaders(headerAccessor); + + headerAccessor.setHeader("replyChannel", "foo"); + Message message1 = messageBuilder.build(); + + headerAccessor.setHeader("hannel", 0); + Message message2 = messageBuilder.build(); + + assertThat(message1.getHeaders().get("replyChannel")).isEqualTo("foo"); + assertThat(message2.getHeaders().get("hannel")).isEqualTo(0); + + assertThatIllegalArgumentException().isThrownBy(() -> headerAccessor.setHeader("replyChannel", 0)); + } + }