初探Nacos(三)-- SpringBoot下整合Dubbo和Nacos

花小钱,周边游,马上抢,请关注公众号:爱订不订

作者:唐璜

关于Nacos已经展开了两篇文章:

初探Nacos(一)-- 单机模式启动

初探Nacos(二)-- SpringCloud使用Nacos的服务注册与发现

使用Dubbo的同学如果要切换Nacos也很容易,官方已有文档:Dubbo 融合 Nacos 成为注册中心,可直接测试其提供的例子:dubbo-registry-nacos,比较简单,就不再多说了,今天我们要尝试的是SpringBoot下整合Dubbo和Nacos。

首先,我们新建一个Module,命名为nacos-demo-api, 定义一个dubbo接口,用于测试参数的传递,以及List和Map的参数请求与返回。

public interface HelloProvider {

    String hello(String name);

    List> testMapList(Map map);

}
复制代码

第二步,我们在项目下建一个Dubbo服务提供者Module,命名为nacos-demo-dubbo-provider,在pom.xml添加依赖。


    xyz.aiding.demo
    nacos-demo-api
    ${project.version}


    org.springframework.boot
    spring-boot-starter-web


    org.springframework.boot
    spring-boot-starter-actuator



    com.alibaba
    dubbo-registry-nacos
    0.0.1



    com.alibaba
    dubbo
    2.6.5



    com.alibaba.spring
    spring-context-support
    1.0.2


    com.alibaba.boot
    dubbo-spring-boot-starter
    0.2.1.RELEASE
    
        
            com.alibaba
            dubbo
        
    

复制代码

并在application.properties配置,将dubbo.registry.address配置到指定的Nacos注册中心。

server.port=18082
spring.profiles.active=dev
spring.application.name=nacos-demo-dubbo-provider

##dubbo config
dubbo.registry.address=nacos://127.0.0.1:8848
dubbo.application.name=nacos-demo-dubbo-provider
dubbo.scan.basePackages=xyz.aiding.demo.dubbo.provider
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
复制代码

第三步,编写SpringBoot启动类,此处不需要像上一章一样使用@EnableDiscoveryClient注解。

@SpringBootApplication
public class NacosDubboProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosDubboProviderApplication.class, args);
    }

}
复制代码

并实现dubbo接口。

@Service
public class HelloProviderImpl implements HelloProvider {

    @Value("${spring.profiles.active}")
    private String env;

    @Override
    public String hello(String name) {
        return "hello, " + name;
    }

    @Override
    public List> testMapList(Map map) {
        List> list = new ArrayList>();
        list.add(map);
        Map map2 = new HashMap();
        map2.put("env", env);
        map2.put("testKey", "testValue");
        list.add(map2);
        return list;
    }
}
复制代码

启动该Dubbo提供者服务,登陆Nacos控制台,可以看到服务已注册。

如图所示,服务名前缀为 providers: 的信息为服务提供者的元信息,consumers: 则代表服务消费者的元信息。点击“详情”可查看服务状态详情。

第四步,我们在项目下建一个Dubbo服务消费者Module,命名为nacos-demo-dubbo-consumer,在pom.xml添加跟nacos-demo-dubbo-provider一样的依赖。再在application.properties配置,将dubbo.registry.address配置到指定的Nacos注册中心,也跟provider类同。

server.port=18083
spring.profiles.active=dev
spring.application.name=nacos-demo-dubbo-consumer

##dubbo config
dubbo.registry.address=nacos://127.0.0.1:8848
dubbo.application.name=nacos-demo-dubbo-consumer
dubbo.scan.basePackages=xyz.aiding.demo.dubbo.provider
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
复制代码

第五步,编写SpringBoot启动类,注意,此处需要加上注解@EnableDubbo。

@EnableDubbo
@SpringBootApplication
public class NacosDubboConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosDubboConsumerApplication.class, args);
    }

}
复制代码

再编写一个web controller,调用上面编写的Duboo接口HelloProvider。注意,这里的provider调用,必须要使用注解@Reference,@Reference是Dubbo 远程服务的依赖注入注解,需要服务提供方和消费端约定接口(interface)、版本(version)以及分组(group)信息。

@RestController
public class HelloController {

    @Reference
    HelloProvider helloProvider;

    @GetMapping(value = "/api/hello")
    @ResponseBody
    public String index(@RequestParam("name") String name){
        return helloProvider.hello(name);
    }

    @GetMapping(value = "/api/testMapList")
    @ResponseBody
    public List> testMapList(){
        Map map = new HashMap();
        map.put("hello", "nacos-dubbo");
        return helloProvider.testMapList(map);
    }

}
复制代码

启动该Dubbo消费者服务,登陆Nacos控制台,可以看到服务已注册。

点击“详情”可查看服务详情。

打开浏览器,访问http://127.0.0.1:18083/api/hello?name=abc

访问http://127.0.0.1:18083/api/testMapList

就是这么简单,SpringBoot下整合Dubbo和Nacos到此结束,下一章我们开始尝试Nacos作为配置中心的使用。

你可能感兴趣的:(初探Nacos(三)-- SpringBoot下整合Dubbo和Nacos)