dubbo 消费者注册zookeeper失败问题记录

本人遇到的问题是:生产者一次就注册上去了,但是到消费者这里一直注册不上去,调试了好长时间。

本人问题所在:问题本来挺简单的就是由于自己对@Reference与@Autowired和@Resource这三个注解不够理解造成项目可以跑起来但是就是注册不上去的原因

浅度解析:

@Autowired注解是根据类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。而且Autowired可以和Qualifier一起使用

例如:

@Configuration
public class TestConfiguration {
   @Bean("testClass1")
   TestClass testClass1(){
       return new TestClass("TestClass1");
   }
   @Bean("testClass2")
   TestClass testClass2(){
       return new TestClass("TestClass2");
   }
}
@RestController
public class TestController {

    //此时这两个注解的连用就类似 @Resource(name="testClass1")
    @Autowired
    @Qualifier("testClass1")
    private TestClass testClass;

    @GetMapping("/test")
    public Object test(){
        return testClassList;
    }

}

@Resource注解与@Autowired注解类似区别是:

@Autowired先查找Type再Name ,@Resource先查找Name再Type(当指定@Resource name属性时,只会Name)

@Reference注解是用于dubbo消费者服务指明引用哪个提供者接口服务,在工程项目中会有很多模块,每个模块是一个服务,一个服务调用另一个服务都需要使用@Reference注解

例如:

@Service(interfaceClass = TestService.class)
@Transactional
public class TestServiceImpl implements TestService {
    void add(TestPojo test){

    }
}
@RestController
@RequestMapping("test")
public class TestController {
    @Reference
    private TestService TestService;
}

两个位置的代码属于两个服务。

总结:@Reference注入的是分布式中的远程服务的对象,@Resource和@Autowired注入的是本地spring容器中的对象

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
服务消费者调用失败可能有多种原因,具体需要根据你的具体情况来分析。以下是一些可能导致服务消费者调用失败的常见问题和解决方法: 1. 检查服务提供者是否已经成功注册ZooKeeper。你可以使用 ZooKeeper 的命令行工具或可视化工具来检查服务提供者是否已经成功注册。如果服务提供者没有成功注册,那么服务消费者无法找到该服务,调用也会失败。 2. 检查服务消费者是否正确引用了服务提供者的接口。服务消费者在调用服务提供者时,需要正确引用服务提供者的接口,否则将无法调用成功。你可以检查服务消费者代码中引用服务提供者接口的地方,确保其与服务提供者的接口一致。 3. 检查服务消费者的网络连接是否正常。服务消费者需要能够正确连接到 ZooKeeper 和服务提供者,才能调用服务。你可以检查服务消费者的网络连接是否正常,确保其可以与 ZooKeeper 和服务提供者建立连接。 4. 检查服务提供者的配置是否正确。服务提供者的配置可能会影响服务消费者的调用。你可以检查服务提供者的配置项,确保其与服务消费者的配置一致。 5. 检查服务提供者的实现是否正确。如果服务提供者的实现有问题,可能会导致服务消费者调用失败。你可以检查服务提供者的实现代码,确保其正确实现了服务接口。 希望这些提示能够帮助你解决问题。如果你需要更多的帮助,请提供更多的上下文和错误信息,我会尽力为你提供帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值