Dubbo开发详细流程
1:首先创建服务之间的通用项目common
新建maven项目mall-common
新建cn.mall.bean包,新建UserAddress类
新建cn.mall.service包,新建接口UserService
使用maven clean compile package install
注意(*):创建实体类时,必须要实现序列化,因为dubbo进行RPC传输协议,进行协议传输必须要序列化!!! 否则使用则报错
2:创建服务提供者项目
新建Spring Boot项目mall-user-provider
修改pom.xml文件,添加依赖
<!--dobbo-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!--zookeeper client-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
<!--排除-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>cn.mall</groupId>
<artifactId>mall-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
配置application.yml
server:
port: 8081
dubbo:
application:
name: mall-user-provider
registry:
address: zookeeper://127.0.0.1:2181
protocol: 20880
Zookeeper
Dubbo
在启动类上添加@EnableDubbo
@EnableDubbo
使用@Service暴露服务接口,实现服务接口,提供服务
注意(*):这个service是dubbo包里的service
import org.apache.dubbo.config.annotation.Service;
@Service
运行项目
正常成功,可以去监控中心检查
3:创建消费者项目
新建Spring Boot项目mall-order-consumer
修改pom.xml文件,添加依赖
<!--dobbo-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!--zookeeper client-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.8.0</version>
<!--排除-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>cn.mall</groupId>
<artifactId>mall-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
配置application.yml
server:
port: 8081
dubbo:
application:
name: mall-Order-provider
registry:
address: zookeeper://127.0.0.1:2181
Zookeeper
Dubbo
使用@Reference远程调用服务
注意(*):也是dubbo包里的
import org.apache.dubbo.config.annotation.Reference;
@Reference
编写控制器类
package cn.mall.controller;
import cn.mall.bean.Merchandise;
import cn.mall.bean.Order;
import cn.mall.impl.UsersService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* @author Doctor.Sun
* @createTime 2022/10/11 13:57
* @description
*/
@RestController
public class UserController {
@Resource
private UsersService usersService;
@RequestMapping("/initOrders")
public List<Order> initOrders(@RequestParam("id") String orderId)throws Exception{
List<Order> order = usersService.Order(orderId);
for (Order o : order) {
System.out.println("订单信息的编号为:"+o.getOrderId());
}
return order;
}
}
在启动类上添加@EnableDubbo
@EnableDubbo
运行项目
启动成功,进行浏览器测试
控制台成功打印数据
Dubbo开发注意事项:
- 实体类必须序列化
- 注意@Service包名称
- 启动类必要加@@EnableDubbo
- @Reference包名称,此注解是订阅服务
- 注意项目的启动流程,必须先启动服务提供者,在启用消费者
*注意:(假如我的服务提供者没启,直接启动消费者,项目会直接报错!!)