Dubbo
dubbo 主要包括接口提供者api、提供者provider和消费者consumer
先创建一个maven工程
创建接口api
在api中创建一个实体类user和一个接口UserService
实体类需要实现Serializable接口,否则后面调用可能会报错
public class User implements Serializable{
private String id;
private String name;
private String addr;
public User(String id, String name, String addr) {
this.id = id;
this.name = name;
this.addr = addr;
}
public User() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
创建一个接口
public interface UserService {
/**
* 根据uid初始化User
* @return
*/
public List<User> initUser(String uid);
}
创建提供者provider
像创建接口api一样的方式创建,这里就不展示了
在pom.xml文件中引入duboo和自己创建的api
<!--引入接口-->
<dependency>
<groupId>com.hal.dubbo</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--引进dubbo 模块-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
创建一个UserServiceImpl 实现api中的UserService
package com.hal.dubbo.provider.service;
import com.hal.dubbo.api.bean.User;
import com.hal.dubbo.api.service.UserService;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* @Author hal
* @Date 2020-4-29 16:42
*/
@Service
@Component
public class UserServiceImpl implements UserService {
@Override
public List<User> initUser(String uid) {
User user=new User("1","张三","江苏省南京市雨花台区软件大道26号");
User user1=new User("2","李四","江苏省南京市江宁区吉印大道31号");
List<User> list= new ArrayList<>();
list.add(user);
list.add(user1);
return list;
}
}
**这里@Service 是*com.alibaba.dubbo.config.annotation.Service;
最重要的 :配置zookper和dubbo
src -> main -> resources -> application.properties
spring.application.name=provider //应用名称
server.port=9091 //应用访问端口
dubbo.application.name=provider //dubbo相应的名称
demo.service.version =1.0.0
dubbo.protocol.name=dubbo //dubbo协议
dubbo.protocol.port=20880 //dubbo端口
dubbo.registry.protocol=zookeeper //dubbo自动注册协议
dubbo.registry.address=127.0.0.1:2181 //注册中心地址
dubbo.provider.timeout=1000 //过期时间
创建消费者comsumer
这里选择web
在pom.xml文件中引入duboo和自己创建的家口api
<!--引入接口-->
<dependency>
<groupId>com.hal.dubbo</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!--引进dubbo 模块-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
最重要的 :配置zookper和dubbo
src -> main -> resources -> application.properties
spring.application.name=consumer
server.port=8081
dubbo.application.name=consumer
demo.service.version =1.0.0
dubbo.registry.protocol=zookeeper
dubbo.registry.address=127.0.0.1:2181
创建controller
package com.hal.dubbo.comsumer.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.hal.dubbo.api.bean.User;
import com.hal.dubbo.api.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Author hal
* @Date 2020-4-29 17:57
*/
@RestController
public class UserController {
@Reference
UserService userService;
@GetMapping("getAddr")
public List<User> getAddr(@RequestParam("uid")String uid){
System.out.println("uid="+uid);
return userService.initUser(uid);
}
}
最后:
先启动本地的zookeeper -> 启动dubbo-admin ->启动提供者 ->启动消费者
在提供者和消费者启动类中加入@EnableDubbo 注解
启动后可以到Dubbo Admin 查看
在浏览器中输入地址