首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SpringAOP拦截发送和接收消息

使用SpringAOP拦截发送和接收消息
EN

Stack Overflow用户
提问于 2020-08-26 09:07:43
回答 1查看 360关注 0票数 0

出于某些原因,我不得不拦截发送和接收消息。(将消息包装起来,并在收到消息时解析它)。

我知道MessagePostProcessor是一种拦截器,但它会影响当前的代码。因此,我正在考虑使用Spring。

为了发送消息,我可以简单地拦截RabbitTemplate的sendconvertAndSend方法,如下所示:

代码语言:javascript
复制
@Around("execution(* org.springframework.amqp.rabbit.core.RabbitTemplate.send(..))")

但是对于接收消息,哪种方法是最好的拦截?在大多数情况下,RabbitListener用于接收消息。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-26 13:36:29

Advice添加到侦听器容器的adviceChain中。请参阅https://docs.spring.io/spring-amqp/docs/2.2.10.RELEASE/reference/html/#containerAttributes

编辑

代码语言:javascript
复制
@Bean
public MethodInterceptor advice() {
    return invocation -> {
        Message message = (Message) invocation.getArguments()[0];
        try {
            // before
            invocation.proceed();
            // after
        }
        catch (Exception e) {
            // ...
            throw e;
        }
        finally {
            // ...
        }
        return null;
    };
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63594259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档