记dubbo异步调用故障分析

本文探讨了在公司使用dubbo时遇到的异步调用问题。原本通过xml配置实现异步,后改为使用@Reference注解,导致所有接口默认异步。尝试通过方法级别配置异步,但无法满足接口同步/异步切换的需求。发现@Reference注解的bean为单例,导致配置冲突。最后指出问题可能源于dubbo 2.6.7版本,而2.7.6及以上版本已支持多例,为解决方案提供了方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司之前使用dubbo接口,相关依赖配置在spring-dubbo-consumer.xml中,以如下形式存在

 <dubbo:reference id="AService" interface="com.XX.common.api.AService"/>

在代码文件中直接用@Resource注解注入。
由于有异步需求所以在xml文件中做如下配置

<dubbo:reference id="AService" interface="com.XX.common.api.AService">
        <dubbo:method name="getData" async="true" timeout="1000"/>
</dubbo:reference>

后来由于公司推行注解化,将用@Reference对xml中的reference配置进行代替。那么代码文件中将直接用@Reference注解注入service。

我们来看Reference注解的源码

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({
   ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
public @interface Reference {
   

    Class<?> interfaceClass() default void.class;

    String interfaceName() default "";

    String version() default "";

    String group() default "";

    String url() default "";

    String client() default "";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值