注意:这里为了方便,直接使用了Redis作为了注册中心。对于redis连接相关配置参数,可以通过dubbo.registry.parameters.xxx的形式来进行设置,由于parameters是个Map对象,所以添加的key是不会进行大小写转换的,填写了什么就是什么。具体的registry配置对象,可以查看com.alibaba.dubbo.config.RegistryConfig类。而对于redis相关参数配置,可以查看com.alibaba.dubbo.registry.redis.RedisRegistry类。
其他的注册中心,也是类似的,大家可在包com.alibaba.dubbo.registry找到都要的注册中心配置类。
3.启动类编写。
DubboProviderApplication.java
/** * dubbo-提供者 * @author oKong * */ @SpringBootApplication @Slf4j public class DubboProviderApplication { public static void main(String[] args) throws Exception { //由于dubbo提供者只是单纯提供服务的 可以为一个非web环境 new SpringApplicationBuilder(DubboProviderApplication.class).web(false).run(args); log.info("spring-boot-dubbo-provider启动!"); } }4.启动应用,可以访问下redis服务,可以看见已经有服务列表信息了。
服务消费者创建spring-boot-dubbo-consumer工程。
0.引入pom依赖
1.配置文件添加注册中心及服务版本相关信息
# 应用名称 便于识别 dubbo.application.id=spring-boot-dubbo-consumer dubbo.application.name=spring-boot-dubbo-consumer server.port=9696 #设置扫描路径 被注解@service和@Reference 等 dubbo.scan.basePackages=cn.lqdev.learning.springboot.dubbo.consumer # 注册中心配置 dubbo.registry.id=okong-registry #注册中心类型 这里使用redis作为注册中心 # zookeeper://127.0.0.1:2181 dubbo.registry.address=redis://127.0.0.1:6379 # 设置用户名密码 若有的话 #dubbo.registry.username=oKong #dubbo.registry.password=oKong # 设置redis参数 # 连接池中的最大空闲连接 dubbo.registry.parameters.max.idle=8 # 连接池最大连接数(使用负值表示没有限制) dubbo.registry.parameters.max-active=8 # 连接池最大阻塞等待时间(使用负值表示没有限制) dubbo.registry.parameters.max-wait=-1 # 连接池中的最大空闲连接 dubbo.registry.parameters.max-idle=8 # 连接池中的最小空闲连接 dubbo.registry.parameters.min-idle=02.启动类编写
DubboConsumerApplication.java
/** * dubbo-消费者实例 * @author oKong * */ @SpringBootApplication @Slf4j public class DubboConsumerApplication { public static void main(String[] args) throws Exception { SpringApplication.run(DubboConsumerApplication.class, args); log.info("spring-boot-dubbo-consumer启动!"); } }3.编写一个restapi接口服务,进行服务调用。
/** * 调用实例 * @author oKong * */ @RestController @Slf4j public class DemoController { /** * 申明为一个reference,其实就是设置一个bean类了, * 将原来xml配置替换成注解而已 * <dubbo:reference id=“xxxService” interface=“com.xxx.XxxService” /> */ @Reference(version = "1.0.0") IHelloService helloService; @GetMapping("/hello") public String hello(String name) { log.info("调用提供者服务,参数name:{}", name); return helloService.hello(name); } }4.启动应用,访问::9696/hello?name=oKong ,可以看见服务调用成功了。
监控后台