前言:
首先要搭建zookeeper环境并启动,可参照window下搭建zookeeper_半生归来仍少年的博客-CSDN博客
dubbo管理平台搭建:
下载:dubbo-admin-2.5.8.war-互联网文档类资源-CSDN下载
放到tomcat的webapp目录下,注意zookeeper的端口要对应(\WEB-INF\dubbp.application),启动tomcat访问,账号密码好像是 root/root 或者是guest/guest
1.新建项目dubboapi(接口服务)
1.1.说明:该项目是存放调用的接口
项目结构大致如下
1.2.pom文件如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>dubboapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dubboapi</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1.3.BaseService类如下
package com.example.dubboapi.service;
public interface BaseService {
String test(String name);
String test();
}
2.新建项目dubboprovider(接口提供者)
2.1.说明:给消费者提供接口调用
项目目录大致如下
3.新建项目dubboconsumer(接口消费者)
3.1.说明:调用接口提供者的接口
目录大致如下
4.在dubboapi(接口服务)项目将dubboprovider(接口提供者)和dubboconsumer(接口消费者)作为模块引入
4.1.操作如下:
4.1.以上操作将 dubboprovider(接口提供者)和dubboconsumer(接口消费者)引入进来,此时目录结构大致如下:
5.配置dubboprovider(接口提供者)
5.1.pom文件配置如下,注意一定要引入dubboapi(接口服务)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>dubboprovider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dubboprovider</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--引入dubboapi-->
<dependency>
<groupId>com.example</groupId>
<artifactId>dubboapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!--引入dubbo环境-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5.2.在service目录下新建UserServiceImpl并实现BaseService接口,注意:是使用dubbo的@service注解
package com.example.dubboprovider.service;
import com.alibaba.dubbo.config.annotation.Service;
import com.example.dubboapi.service.BaseService;
@Service
public class UserServiceImpl implements BaseService {
@Override
public String test(String name) {
return name+">--<";
}
@Override
public String test() {
return "测试测试";
}
}
5.3.在启动类加上@EnableDubbo
package com.example.dubboprovider;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class DubboproviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboproviderApplication.class, args);
}
}
5.4.application.yml配置如下
dubbo:
application:
name: dubbo-provider
registry:
address: 127.0.0.1:2181
protocol: zookeeper
check: false
protocol:
name: dubbo
port: 22222
monitor:
protocol: register
consumer:
check: false
timeout: 3000
server:
port: 9998
5.5.启动启动类
在dubbo的管理平台能 能看到接口的信息
6.配置dubboconsumer(接口消费者)
6.1.pom文件配置如下,注意一定要引入dubboapi(接口服务)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>dubboconsumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dubboconsumer</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--引入dubboapi模块-->
<dependency>
<groupId>com.example</groupId>
<artifactId>dubboapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!--引入dubbo环境-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
6.2.编写service和controller代码
6.2.1.service层,注意这里的@Service是spring的注解了,@Reference注入的是分布式的远程服务的对象
public interface UserService {
String test(String name);
String test();
}
package com.example.dubboconsumer.service;
import com.alibaba.dubbo.config.annotation.Reference;
import com.example.dubboapi.service.BaseService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService{
@Reference
private BaseService userService;
@Override
public String test(String name) {
return userService.test(name);
}
@Override
public String test() {
return userService.test();
}
}
6.2.2.controller层
package com.example.dubboconsumer.controller;
import com.example.dubboconsumer.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
public class UserController {
@Resource
private UserService userService;
@RequestMapping("/test1")
public String test(){
return userService.test("测试测试测试测试");
}
@RequestMapping("/test2")
public String test1(){
return userService.test();
}
}
6.3.启动类加上@EnableDubbo
@EnableDubbo
@SpringBootApplication
public class DubboconsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboconsumerApplication.class, args);
}
}
6.4.配置application.yml
dubbo:
application:
name: dubbo-consumer
registry:
address: 127.0.0.1:2181
protocol: zookeeper
check: false
monitor:
protocol: register
consumer:
check: false
timeout: 3000
server:
port: 9999
6.5.启动启动类
在dubbo的管理平台能 能看到接口的信息
6.6.浏览器访问127.0.0.1:9999/test1 和127.0.0.1:9999/test2
接口调用正常