创建springboot测试项目
1. 端口号整理
项目 | 端口号 |
---|---|
zookeeper | 2181 |
dubbo-admin-server | 8081 |
dubbo-admin-ui | 8082 |
user-dubbo-server | 8083 |
order-dubbo-server | 8084 |
2. 项目结构
dubbo-parent
|----- interface-dubbo
|----- user-dubbo-server
|----- order-dubbo-server
- interface-dubbo :用于写接口
- user-dubbo-server :对外提供user服务,在此次测试中为服务提供者
- order-dubbo-server:对外提供订单服务,在此次测试中为服务消费者
- order-dubbo-server和user-dubbo-server 共同依赖 interface-dubbo
3. 创建 interface-dubbo
3.1 创建普通的springboot 项目,步骤略
3.2 创建包
com.jxs.interfacedubbo.user
3.3 创建接口: UserService
package com.jxs.interfacedubbo.user;
import java.util.List;
import java.util.Map;
public interface UserService {
/**
* @param id
* 查询用户列表
* @return
*/
public List<Map> getUserList(String id);
}
4. 创建 user-dubbo-server (生产者)
4.1 创建普通的springboot 项目,步骤略
4.1 引入依赖
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.3-beta</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.1.0</version>
</dependency>
4.3 创建service
高版本已建议使用@DubboService 注解
package com.jxs.userdubboserver.service;
import com.jxs.interfacedubbo.user.UserService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@DubboService
@Service
public class UserServiceImpl implements UserService {
/**
* @param id 查询用户列表
* @return
*/
@Override
public List<Map> getUserList(String id) {
List<Map> returnList = new ArrayList<>();
Map<String,Object> item = new HashMap<>();
item.put("id",id);
item.put("name","zhangsan");
item.put("password","123456");
returnList.add(item);
return returnList;
}
}
4.4 修改配置文件
server.port=8083
#指定当前服务名
dubbo.application.name=user-provider
# 配置注册中心 zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181
# <!-- 用dubbo协议在20880端口暴露服务 -->
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.monitor.protocol=registry
4.5 服务启动
查看dubbo-admin 中是否有注册进来
5. 创建 order-dubbo-server(消费者)
5.1 创建普通的springboot 项目,步骤略
5.2 引入依赖
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.3-beta</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.1.0</version>
</dependency>
5.3 启动dubbo 和 配置扫描注解
@SpringBootApplication
@DubboComponentScan
@EnableDubbo
public class OrderDubboServerApplication {
public static void main(String[] args) {
SpringApplication.run(OrderDubboServerApplication.class, args);
}
}
5.4 新增controller类 用于调用测试
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
private OrderService orderService;
@ResponseBody
@GetMapping("/getUserInfo")
public List<Map> getUserInfo(@RequestParam("id") String id) {
return orderService.getUserInfo(id);
}
}
5.5 新增service实现类
@Service
public class OrderServiceImpl implements OrderService {
/**
* 服务消费
*/
@DubboReference
private UserService userService;
@Override
public List<Map> getUserInfo(String id) {
return userService.getUserList(id);
}
}
5.6 修改配置文件
#服务端口号
server.port=8084
dubbo.application.name=order-consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.consumer.timeout=3000
5.7 启动服务
6.测试
6.1访问http://localhost:8084/order/getUserInfo?id=1
返回
[{“password”:“123456”,“name”:“zhangsan”,“id”:“1”}]