最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

热门:如何基于 Spring Boot 快速开发一个 Dubbo 微服务应用

来源:博客园

Dubbo 还提供了包括XML、API等多种启动与接入方式,更多开发方式和配置细节可参见配置手册。

下载示例代码

完整示例代码在 dubbo-samples 中。


(资料图)

  1. 下载源码
git clone -b master https://github.com/apache/dubbo-samples.git
  1. 进入示例目录
cd dubbo-samples/1-basic/dubbo-samples-spring-bootls # 查看目录结构

快速运行示例

  1. 编译 Provider在 dubbo-samples-spring-boot 目录执行 maven 命令
mvn clean package
  1. 运行 Provider进入 dubbo-samples-spring-boot-provider/target 目录并启动 java 进程
cd ./dubbo-samples-spring-boot-providerjava -jar ./target/dubbo-samples-spring-boot-provider-1.0-SNAPSHOT.jar
  1. 运行 consumer进入 dubbo-samples-spring-boot-consumer 目录并启动 java 进程
java -jar ./target/dubbo-samples-spring-boot-consumer-1.0-SNAPSHOT.jar
  1. 查看结果在 consumer 侧会输出如下信息:
result: Hello World

在 provider 侧会输出如下信息:

Hello World, request from consumer: xxx.xxx.xxx.xxx

至此就把 Dubbo 的基本功能都实现了,可以在 Dubbo 的基础上进行更多的开发。

示例核心流程

关于示例的更详细解读可参见 注解配置

1. 定义服务接口

dubbo-samples-spring-boot-interface/DemoService.java

package org.apache.dubbo.samples.basic.api;public interface DemoService {    String sayHello(String name);}

2. 提供方实现接口并暴露服务

dubbo-samples-spring-boot-provider/DemoServiceImpl.java

@DubboServicepublic class DemoServiceImpl implements DemoService {    @Override    public String sayHello(String name) {        System.out.println("Hello " + name + ", request from consumer: " + RpcContext.getContext().getRemoteAddress());        return "Hello " + name;    }}

3. 配置 application.yml 文件

dubbo-samples-spring-boot-provider/resources/application.yml

dubbo:  application:    name: dubbo-springboot-demo-provider  protocol:    name: dubbo    port: -1  registry:    id: zk-registry    address: zookeeper://127.0.0.1:2181  config-center:    address: zookeeper://127.0.0.1:2181  metadata-report:    address: zookeeper://127.0.0.1:2181

4. 定义 Spring Boot 主函数

dubbo-samples-spring-boot-provider/ProviderApplication.java

@SpringBootApplication@EnableDubbopublic class ProviderApplication {    public static void main(String[] args) throws Exception {        new EmbeddedZooKeeper(2181, false).start();        SpringApplication.run(ProviderApplication.class, args);        System.out.println("dubbo service started");        new CountDownLatch(1).await();    }}

其中,@EnableDubbo必须配置。

5. 引用远程服务

dubbo-samples-spring-boot-consumer/ConsumerApplication.java

public class ConsumerApplication {    @DubboReference    private DemoService demoService;}

6. 定义 application.yml

dubbo-samples-spring-boot-consumer/application.yml

dubbo:  application:    name: dubbo-springboot-demo-consumer  protocol:    name: dubbo    port: -1  registry:    id: zk-registry    address: zookeeper://127.0.0.1:2181  config-center:    address: zookeeper://127.0.0.1:2181  metadata-report:    address: zookeeper://127.0.0.1:2181

7. 加载 Spring 配置,并调用远程服务

dubbo-samples-spring-boot-consumer/ConsumerApplication.java

@SpringBootApplication@Service@EnableDubbopublic class ConsumerApplication {    @DubboReference    private DemoService demoService;        public String doSayHello(String name) {        return demoService.sayHello(name);    }    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(ConsumerApplication.class, args);        ConsumerApplication application = context.getBean(ConsumerApplication.class);        String result = application.doSayHello("world");        System.out.println("result: " + result);    }}

其中,@EnableDubbo必须配置。

原文首于 Dubbo 官网:https://cn.dubbo.apache.org/zh/overview/quickstart/欢迎在 https://github.com/apache/dubbo 给 Dubbo Star。搜索关注官方微信公众号:Apache Dubbo,了解更多业界最新动态,掌握大厂面试必备 Dubbo 技能

关键词: 远程服务 开发方式 的基础上