創建一個dubbo整合springboot的微服務項目

創建一個dubbo微服務項目

首先創建一個父項目,vhukze-dubbo-parent-pom,依賴引入,打包類型是pom

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

在此項目下創建子項目,接口父項目,vhukze-dubbo-public-api-service,打包方式是pom

在接口父項目下創建子項目,服務提供者的接口項目,vhukze-dubbo-public-api-member-service,打包方式是pom,寫一個接口,

package com.vhukze.api.member;

public interface IMemberService {
    String getUser();
}

在parent父項目下創建上面服務提供者接口項目的實現項目,vhukze-dubbo-api-member-service-impl,打包方式jar,引入要實現的接口項目依賴

<dependency>
            <artifactId>vhukze-dubbo-public-api-member-service</artifactId>
            <groupId>com.vhukze</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

寫一個類實現接口,下面的Service註解是Dubbo裏面的註解

package com.vhukze.api.member.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.vhukze.api.member.IMemberService;

@Service
public class MemberServiceImpl implements IMemberService {
    @Override
    public String getUser() {
        return "訂單服務調用會員服務";
    }
}

寫一個啓動類

package com.vhukze;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Hello world!
 *
 */
@SpringBootApplication
//開啓dubbo服務,自動掃描Service註解的類,可以不在配置文件中添加掃包配置
@EnableDubbo
public class App 
{
    public static void main( String[] args )
    {

        SpringApplication.run(App.class);
    }
}

resources下application.yml配置文件

##服務器端口號
server:
  port: 8080
##註冊到註冊中心的名字
dubbo:
  application:
    name: member
  #採用協議的方式
  protocol:
    name: dubbo
    #發佈dubbo端口號
    port: 20880
  #註冊中心地址
  registry:
    address: zookeeper://127.0.0.1:2181
  scan:
  #實現類掃包範圍
    base-packages: com.vhukze.api.member.impl

服務提供者寫好了

創建服務消費者項目,在parent父項目下,vhuzke-dubbo-order-web,打包方式jar

resources下application配置文件

server:
  port: 8081
###dubbo 註冊服務名稱
dubbo:
  application:
    name: order
#  ###dubbo服務地址
#  protocol:
#    name: dubbo
#    port: 20880
  registry:
    address: zookeeper://localhost:2181
  consumer:
    timeout: 5000

寫一個controller用來測試訪問,Reference註解是從dubbo中注入實例,Service註解添加進來的實例。

這裏直接注入實例到註解就行

package com.vhukze.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.vhukze.api.member.IMemberService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
class OrderController {
    @Reference
    private IMemberService iMemberService;

    @RequestMapping("/orderToMember")
    public String OrderToMember(){
        return iMemberService.getUser();
    }
}

啓動zookeeper,訪問上面的controller中的接口

http://localhost:8081/orderToMember

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章