springbootテストプロジェクトを作成する
1.ポート番号の並べ替え
事業 | ポート番号 |
---|---|
動物園の飼育係 | 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:ユーザーサービスを外部に提供し、このテストでサービスプロバイダーとして機能します
- order-dubbo-server:外の世界に注文サービスを提供し、このテストで消費者にサービスを提供します
- order-dubbo-serverとuser-dubbo-serverはどちらもinterface-dubboに依存しています
3.インターフェイスを作成します-ダボ
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サービスの上位バージョンを作成するには、@ 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ダボを起動し、スキャン注釈を構成します
@SpringBootApplication
@DubboComponentScan
@EnableDubbo
public class OrderDubboServerApplication {
public static void main(String[] args) {
SpringApplication.run(OrderDubboServerApplication.class, args);
}
}
5.4テストを呼び出すためのコントローラークラスを追加する
@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
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"}]