您当前的位置: 首页 >  spring

一一哥Sun

暂无认证

  • 3浏览

    0关注

    622博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Day09_06_Dubbo教程之Springboot方式实现Dubbo服务的发布和消费

一一哥Sun 发布时间:2019-06-11 17:36:39 ,浏览量:3

以Springboot方式实现Dubbo服务的发布和消费 一. 创建SprintBoot项目

整个项目的目录结构为:

修改pom.xml文件



    4.0.0

    com.syc.dubbo
    dubbo_demos
    pom
    1.0-SNAPSHOT

    
        UTF-8
        UTF-8
        1.8
    

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.1.RELEASE
         
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


二. 创建通用的接口模块

在项目中创建一个名为 dubbo_service_api 的模块,该项目只负责定义user相关接口.

2.1 修改POM文件




    
        dubbo_demos
        com.syc.dubbo
        1.0-SNAPSHOT
    

    4.0.0
    dubbo_service_api
    

2.2 定义服务接口

package com.syc.dubbo.service.user;

/**
 * 定义接口方法
 */
public interface UserService {

    String sayHi();
}
三. 创建服务提供者模块

创建一个名为 dubbo_service_user_provider 的项目,该项目主要用于实现接口.

1. 修改POM文件



    
        dubbo_demos
        com.syc.dubbo
        1.0-SNAPSHOT
    

    4.0.0
    dubbo_service_user_provider

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

        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.2.0
        
        
            com.alibaba.boot
            dubbo-spring-boot-actuator
            0.2.0
        

        
            com.syc.dubbo
            dubbo_service_api
            1.0-SNAPSHOT
        
    


主要增加了以下依赖:

  • com.alibaba.boot:dubbo-spring-boot-starter:0.2.0: Dubbo Starter,0.2.0 版本支持 Spring Boot 2.x,是一个长期维护的版本. 注: 0.1.0 版本已经不推荐使用了,是个短期维护的版本,如果你还在用旧版,请大家尽快升级.

  • com.alibaba.boot:dubbo-spring-boot-actuator:0.2.0: Dubbo 的服务状态检查

  • com.syc.dubbo:dubbo_service_api:1.0.0-SNAPSHOT: 刚才创建的接口项目,如果无法依赖别忘记先 mvn clean install到本地仓库.

2. 通过 @Service 注解声明服务提供者
package com.syc.dubbo.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.syc.dubbo.service.user.UserService;

/**
 * 接口实现类
 */
@Service(version = "${user.service.version}")
public class UserServiceImpl implements UserService {

    @Override
    public String sayHi() {

        return "Hello Dubbo";
    }
}
3. 创建Application启动类
package com.syc.dubbo.service;

import com.alibaba.dubbo.container.Main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
        // 启动 Provider 容器,注意这里的 Main 是 com.alibaba.dubbo.container 包下的.
        Main.main(args);
    }
}
4. 创建application.yml配置文件
# Spring boot application
spring:
  application:
    name: dubbo-service-user-provider

# UserService service version
user:
  service:
    version: 1.0.0

# Dubbo Config properties
dubbo:
  #扫描@Service注解所在包:@com.alibaba.dubbo.config.annotation.Service
  scan:
    basePackages: com.syc.dubbo.service.impl
  ## ApplicationConfig Bean
  application:
    id: dubbo-service-user-provider
    name: dubbo-service-user-provider
    qos-port: 22222
    qos-enable: true
  ## ProtocolConfig Bean
  protocol:
    id: dubbo
    name: dubbo
    #自定义的服务提供者端口号
    port: 12345
    status: server
  ## RegistryConfig Bean
  registry:
    id: zookeeper
    address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183

# Enables Dubbo All Endpoints
management:
  endpoint:
    dubbo:
      enabled: true
    dubbo-shutdown:
      enabled: true
    dubbo-configs:
      enabled: true
    dubbo-services:
      enabled: true
    dubbo-references:
      enabled: true
    dubbo-properties:
      enabled: true
  # Dubbo Health
  health:
    dubbo:
      status:
        ## StatusChecker Name defaults (default : "memory", "load" )
        defaults: memory
        ## StatusChecker Name extras (default : empty )
        extras: load,threadpool
四. 创建服务消费者模块

创建一个名为 hello-dubbo-service-user-consumer 的项目,该项目用于消费接口(调用接口).

1. 修改POM文件


    
        dubbo_demos
        com.syc.dubbo
        1.0-SNAPSHOT
    

    4.0.0
    dubbo_service_user_consumer

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

        
            com.alibaba.boot
            dubbo-spring-boot-starter
            0.2.0
        
        
            com.alibaba.boot
            dubbo-spring-boot-actuator
            0.2.0
        

        
            com.syc.dubbo
            dubbo_service_api
            1.0-SNAPSHOT
        
    


2. 通过 @Reference 注入 UserService
package com.syc.dubbo.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.syc.dubbo.service.user.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Reference(version = "${user.service.version}")
    private UserService userService;

    @RequestMapping(value = "hi")
    public String sayHi() {
        return userService.sayHi();
    }
}
3. 创建Application类
package com.syc.dubbo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}
4. 创建application.yml配置文件
# Spring boot application
spring:
  application:
    name: dubbo-service-user-consumer
server:
  port: 9090

# UserService service version
user:
  service:
    version: 1.0.0

# Dubbo Config properties
dubbo:
  scan:
    basePackages: com.syc.dubbo.controller
  ## ApplicationConfig Bean
  application:
    id: dubbo-service-user-consumer
    name: dubbo-service-user-consumer
  ## RegistryConfig Bean
  registry:
    id: zookeeper
    address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183

# Dubbo Endpoint (default status is disable)
endpoints:
  dubbo:
    enabled: true

management:
  server:
    port: 9091
  # Dubbo Health
  health:
    dubbo:
      status:
        ## StatusChecker Name defaults (default : "memory", "load" )
        defaults: memory
  # Enables Dubbo All Endpoints
  endpoint:
    dubbo:
      enabled: true
    dubbo-shutdown:
      enabled: true
    dubbo-configs:
      enabled: true
    dubbo-services:
      enabled: true
    dubbo-references:
      enabled: true
    dubbo-properties:
      enabled: true
  endpoints:
    web:
      exposure:
        include: "*"
五. 启动 Dubbo Admin 控制台

查看是否成功注册服务,效果图如下:

 

关注
打赏
1665624836
查看更多评论
立即登录/注册

微信扫码登录

0.0381s