一旦将template.convertAndSend调用,在将消息传递到RabbitMQ之前,是否有一种方法可以拦截消息.
还有什么方法可以在到达处理程序之前拦截消息?
我可以使用发布者的PostProcessor处理消息,但更喜欢使用拦截器.
public class TestPostProcessor implements MessagePostProcessor {
@Autowired
Tracer defaultTracer;
@Override
public Message postProcessMessage(Message message) throws AmqpException {
//.....
//....
return message;
}
}
复制代码
有什么建议么?
最佳答案
MessagePostProcessor是拦截器的一种形式.
有两种方法可以调用一种-使用以MPP作为参数的重载convertAndSend()方法之一,或使用setBeforePublishPostPostors()将一个或多个添加到RabbitTemplate中.
您还可以使用setAfterReceivePostProcessors()截获收到的消息,该方法在从receive()方法返回收到的消息之前调用.
侦听器容器在接收之后以及通过setAfterReceivePostProcessors()方法传递给侦听器之前,也支持MPP.
生产者拦截器:MessagePostProcessor
消费者拦截器:MessagePostProcessor
来源:oschina
链接:https://my.oschina.net/xiaominmin/blog/4494493