創建一個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中的接口