配置 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;
}
有没有办法配置所有@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;
}