Spring AMQP中使用拦截器

馋奶兔 提交于 2020-08-14 16:17:00
一旦将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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!