如何在 Spring AMQP 中使用拦截器

bas*_*u76 5 spring rabbitmq spring-amqp spring-boot

在将消息传递到 RabbitMQ 之前,有没有办法在调用 template.convertAndSend 后拦截消息。

还有什么方法可以在到达处理程序之前拦截消息?

我可以使用 PostProcessor 处理发布者的消息,但更喜欢使用拦截器。

public class TestPostProcessor implements MessagePostProcessor {

    @Autowired
    Tracer defaultTracer;

    @Override
    public Message postProcessMessage(Message message) throws AmqpException {
        //.....
        //.... 
        return message;
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Gar*_*ell 5

MessagePostProcessor 是拦截器的一种形式。

有两种方法可以调用一种方法 - 使用convertAndSend()以 MPP 作为参数的重载方法之一,或者向RabbitTemplateusing添加一个或多个setBeforePublishPostProcessors()

您还可以使用在setAfterReceivePostProcessors()receive()方法返回接收到的消息之前调用的拦截接收到的消息。

侦听器容器还支持在接收之后和通过其setAfterReceivePostProcessors()方法传递给侦听器之前的 MPP 。