【发布时间】:2016-10-21 19:17:01
【问题描述】:
有没有办法在调用 template.convertAndSend 后,在消息传递到 RabbitMQ 之前拦截消息。
还有什么方法可以在到达处理程序之前拦截消息?
我可以使用 PostProcessor 为发布者处理消息,但更喜欢使用拦截器。
public class TestPostProcessor implements MessagePostProcessor {
@Autowired
Tracer defaultTracer;
@Override
public Message postProcessMessage(Message message) throws AmqpException {
//.....
//....
return message;
}
}
有什么建议吗?
【问题讨论】:
-
>I can handle the message using PostProcessor for publisher, but prefer to use interceptor.你能解释一下你的意思吗? MPP 是一种拦截器。侦听器容器还支持在接收之后和交付给侦听器之前的 MPP:setAfterReceivePostProcessors()。 -
要使用它,我必须做 rabbitTemplate.convertAndSend(routingKey,"Message",postProcessor); - 想知道是否有办法注入它,而我们不必在这里提供它。另外我们将如何在 SimpleMessageListenerContainer 上做到这一点?
-
是的;看我的回答。
标签: spring spring-boot rabbitmq spring-amqp