alibaba / jvm-sandbox

Real - time non-invasive AOP framework container based on JVM
GNU Lesser General Public License v3.0
6.77k stars 1.56k forks source link

可以拦截接口方法的调用吗? #447

Closed yu120 closed 5 months ago

yu120 commented 11 months ago

我想拦截RocketMQ消费者的调用请求,拦截点为:org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently#consumeMessage。 因为业务中都是各自实现不同的MessageListenerConcurrently接口来完成业务的消费逻辑处理,所以无法明确到该拦截哪个实现类。因此尝试了,拦截MessageListenerConcurrently接口的consumeMessage方法调用,结果一直接收不到Event。所以想了解一下目前jvm-sandbox是否支持拦截接口方法的调用?

ShiningXu commented 11 months ago

支持,参考一下这个 image

https://github.com/alibaba/jvm-sandbox-repeater/pull/187/commits/24335e95b9f9955d45c59ce6d6f9983aa7324229#diff-36da76b4873b4d7d45bca3c4e2d098a34527db0b5d1b827184a84969e6bb7bac

yu120 commented 11 months ago

@ShiningXu 请问一下,是jvm-sandbox哪个版本才能支持吗?或者还有其他什么特殊配置或要求吗?我把源码原封不动的贴进去,还是没有收到BeforeEvent事件呢

yu120 commented 11 months ago

@ShiningXu 感谢,拦截到了

SampsonJava commented 10 months ago

如果我拦截的接口没有实现类呢, 可行吗

ShiningXu commented 10 months ago

如果我拦截的接口没有实现类呢, 可行吗

增强不会报错,就是拦截不到呗

z529192557 commented 9 months ago

如果我拦截的接口没有实现类呢, 可行吗

增强不会报错,没有实现类的接口没有拦截的意义