Soul网关中的Apache Dubbo插件

今天体验的是Soulapache dubbo插件,如果业务系统是由apache dubbo构建而成的,又需要网关的支持,那么可以直接使用Soul

1.Soul官方在soul-examples模块提供了测试样例,其中的soul-examples-apache-dubbo-service模块演示的是Soul网关对apache dubbo 系统的支持。模块目录及配置信息如下:

1

soul.dubbo是有关Souldubbo插件支持的配置,adminUrlSoul的后台管理地址,contextPath是业务系统的请求路径。

2.在项目的pom文件中引入soul相关依赖,当前版本是2.2.1

        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-client-apache-dubbo</artifactId>
            <version>${soul.version}</version>
        </dependency>

3.在需要被代理的接口上使用注解@SoulDubboClient,@SoulDubboClient注解会把当前接口注册到soul`网关中。使用方式如下:

1

如果其他接口也想被网关代理,使用方式是一样的。在@SoulDubboClient注解中,指定path即可。

运行TestApacheDubboApplication,启动soul-examples-apache-dubbo-service项目。Dubbo是需要注册中心的,可以使用zookeeper或者nacos。本文使用的是zookeeper,启动也很简单。在官网下载,然后解压,直接运行zkServer.cmd就可以运行。

4.参考上一篇的Soul入门,启动Soul AdminSoul BootstrapSoul的后台界面如下:

1

如果dubbo插件没有开启,那么手动开启一下啊。

1

Soul Bootstrap中,加入相关依赖:

 <!--soul  apache dubbo plugin start-->
        <dependency>
            <groupId>org.dromara</groupId>
            <artifactId>soul-spring-boot-starter-plugin-apache-dubbo</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.7.5</version>
        </dependency>
        <!-- Dubbo zookeeper registry dependency start -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.0.1</version>
        </dependency>
        <!-- Dubbo zookeeper registry dependency end -->
        <!-- soul  apache dubbo plugin end-->

5.三个系统(本身的业务系统(这里就是soul-examples-apache-dubbo-service),Soul后台管理系统Soul Admin,Soul核心网关Soul Bootstrap)都启动成功后,就能够测试一把。

1

	 //实际dubbo提供的服务
    @SoulDubboClient(path = "/findAll", desc = "Get all data")
    public DubboTest findAll() {
        DubboTest dubboTest = new DubboTest();
        dubboTest.setName("hello world Soul Apache, findAll");
        dubboTest.setId(String.valueOf(new Random().nextInt()));
        return dubboTest;
    }

上面向网关发起了一个请求http://localhost:9195/dubbo/findAll,实际被调用的是dubbo的服务。

另外也可以发起一个POST请求,下面向网关发起了一个请求http://localhost:9195/dubbo/insert,实际被调用的是dubbo的服务。

1

   //实际dubbo提供的服务
	@SoulDubboClient(path = "/insert", desc = "Insert a row of data")
    public DubboTest insert(final DubboTest dubboTest) {
        dubboTest.setName("hello world Soul Apache Dubbo: " + dubboTest.getName());
        return dubboTest;
    }

最后,这篇文章主要介绍了SoulApache Dubbo提供的支持,结合实际案例进行了演示。