Skip to content

Commit 828e6b1

Browse files
committed
Apply aRPPs for replies with a listener container
- `afterReceivePostProcessors` were not applied when using a reply container.
1 parent 5cadcc3 commit 828e6b1

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ erl_crash.dump
1919
nohup.out
2020
src/ant/.ant-targets-upload-dist.xml
2121
target
22+
.sts4-cache/

spring-rabbit/src/main/java/org/springframework/amqp/rabbit/core/RabbitTemplate.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,6 +1936,11 @@ private Message doSendAndReceiveAsListener(final String exchange, final String r
19361936
try {
19371937
reply = exchangeMessages(exchange, routingKey, message, correlationData, channel, pendingReply,
19381938
messageTag);
1939+
if (reply != null && this.afterReceivePostProcessors != null) {
1940+
for (MessagePostProcessor processor : this.afterReceivePostProcessors) {
1941+
reply = processor.postProcessMessage(reply);
1942+
}
1943+
}
19391944
}
19401945
finally {
19411946
this.replyHolder.remove(messageTag);

spring-rabbit/src/test/java/org/springframework/amqp/rabbit/annotation/EnableRabbitIntegrationTests.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,25 @@ public void endpointWithHeader() {
409409
assertEquals(reply.getMessageProperties().getHeaders().get("replyMPPApplied"), Boolean.TRUE);
410410
}
411411

412+
@Test
413+
public void endpointWithHeaderReplyMPP() {
414+
MessageProperties properties = new MessageProperties();
415+
properties.setHeader("prefix", "prefix-");
416+
Message request = MessageTestUtils.createTextMessage("foo", properties);
417+
AtomicReference<Message> replyRef = new AtomicReference<>();
418+
rabbitTemplate.setAfterReceivePostProcessors(msg -> {
419+
replyRef.set(msg);
420+
return msg;
421+
});
422+
rabbitTemplate.convertSendAndReceive("", "test.header", "", msg -> {
423+
return request;
424+
});
425+
Message reply = replyRef.get();
426+
assertNotNull(reply);
427+
assertEquals("prefix-FOO", MessageTestUtils.extractText(reply));
428+
assertEquals(reply.getMessageProperties().getHeaders().get("replyMPPApplied"), Boolean.TRUE);
429+
}
430+
412431
@Test
413432
public void endpointWithMessage() {
414433
MessageProperties properties = new MessageProperties();

0 commit comments

Comments
 (0)