关于canal消费者中引入dubbo消费者后调用dubbo接口为null问题

时间:2022-07-25
本文章向大家介绍关于canal消费者中引入dubbo消费者后调用dubbo接口为null问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

问题描述:

原来spring boot 2.x+canal服务引入dubbo服务消费者,配置都配过了,发现dubbo消费者每次请求都是报空指针异常。如下图

项目结构:

spring 2.x、canal消费者、kafa集成dubbo消费者服务

排查如下:

首先查看引入配置如下:

引入dubbo包

<dependency>
    <groupId>com.alibaba.boot</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>0.2.0</version>
</dependency>

在配置文件中配置

# Base packages to scan Dubbo Components (e.g., @Service, @Reference)
dubbo.scan.basePackages= com.xx.canal.xx
# Dubbo Config properties
dubbo.application.name = canalconsumer

## ProtocolConfig Bean
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
dubbo.protocol.port=29952
dubbo.application.qos-enable=false
dubbo.provider.timeout=3000
dubbo.provider.threads=2000
dubbo.registry.protocol=zookeeper
dubbo.registry.address=xxx

在application添加dubbo注解

@SpringBootApplication
@EnableDubbo
@EnableDubboConfig

在调用包引入@Reference

@Reference
private IPopFlowConfigEsService popFlowConfigEsService;

问题寻找过程:

首先按照相关的网上尝试

将配置文件改成dubbo.xml

将注解改成其他

....

后面发现

原来dubbo

需要在@@Reference加上版本号

@Reference(version="1.0.0",timeout=5000)