配置 Spring AMQP 为 @RabblitListener 的 replyPostProcessor 属性使用默认 bean

Configure Spring AMQP to use default bean for @RabblitListener's replyPostProcessor attribute

有没有办法配置所有@RabbitListener 注释使用相同的 bean 作为属性 replyPostProcessor 的值?

这是使用此属性的示例:

@RabbitListener(queues = "test.header", group = "testGroup", replyPostProcessor = "echoCustomHeader")
public String capitalizeWithHeader(String in) {
    return in.toUpperCase();
}

@Bean
public ReplyPostProcessor echoCustomHeader() {
    return (req, resp) -> {
        resp.getMessageProperties().setHeader("myHeader", req.getMessageProperties().getHeader("myHeader"));
        return resp;
    };
}

目前没有;随意打开一个新功能问题,为容器工厂添加一个 属性。 https://github.com/spring-projects/spring-amqp/issues

编辑

解决方法:

@Bean
public ReplyPostProcessor echoCustomHeader(AbstractRabbitListenerContainerFactory<?> factory) {
    ReplyPostProcessor rpp = (req, resp) -> {
        resp.getMessageProperties().setHeader("myHeader", req.getMessageProperties().getHeader("myHeader"));
        return resp;
    };
    factory.setContainerCustomizer(container -> {
        MessagingMessageListenerAdapter listener = ((MessagingMessageListenerAdapter) container
                .getMessageListener());
        listener.setReplyPostProcessor(rpp);
    });
    return rpp;
}