从github上下载并解压
启动zookeeper
输入zkServer.cmd
搭建dubbo控制台
打包admin后产生target,将里面的jar包复制到外面,如图所示
在这里用cmd运行jar包(java -jar dubbo-admin......)
启动成功,端口如图所示为7001
访问7001端口,默认账户和密码都是root
搭建监控中心
Monitor监控中心
不是必要的,可以通过可视化界面看到各个服务的情况
进入目录用cmd打开进行打包:命令:mvn package
解压
将此文件夹复制到外面
启动
访问8080,简易的监控中心
要想监控到得先配置信息
下面的配置信息中有所配置
首先先创建3个模块
api里面主要的是共有的接口和类![](https://i-blog.csdnimg.cn/blog_migrate/c7b49b1d19a368ea37539720d8f11c26.png)
因为在传输的时候需要进行序列化,所以我们这里的UserAddress实现序列化接口
import java.io.Serializable;
public class UserAddress implements Serializable {
private Integer id;
private String userAddress;
private String userId;
private String consignee;
private String phoneNum;
private String isDefault;
public UserAddress() {
super();
}
public UserAddress(Integer id, String userAddress, String userId, String consignee, String phoneNum, String isDefault) {
this.id = id;
this.userAddress = userAddress;
this.userId = userId;
this.consignee = consignee;
this.phoneNum = phoneNum;
this.isDefault = isDefault;
}
public String getUserAddress() {
return userAddress;
}
}
import com.example.api.bean.UserAddress;
import java.util.List;
public interface OrderService {
//初始化订单
public List<UserAddress> initOrder(String userId);
}
import com.example.api.bean.UserAddress;
import java.util.List;
/**
* 用户服务
*/
public interface UserService {
//
public List<UserAddress> getUserAddressList(String userId);
}
provider表示提供者,即真正提供服务的一方
UserServiceImpl
import com.alibaba.dubbo.config.annotation.Service;
import com.example.api.bean.UserAddress;
import com.example.api.service.UserService;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Service //暴露服务,注意引入的是dubbo下的service注解
@Component
public class UserServiceImpl implements UserService {
@Override
public List<UserAddress> getUserAddressList(String userId) {
UserAddress address1 = new UserAddress(1,"中国","1","张三","123456789","true");
UserAddress address2 = new UserAddress(2,"河北","1","李四","7478654789","false");
return Arrays.asList(address1,address2);
}
}
配置文件
pom文件,主要是引入dubbo和上面的共有api模块依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
启动provider
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo //开启基于注解的duubo功能
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
下面来配置消费者consumer
pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
配置文件,因为我们的8080端口已被监控中心占用,所以我们更改端口为8081
server.port=8081
dubbo.application.name=consumer
dubbo.registry.address=127.0.0.1:2181
dubbo.registry.protocol=zookeeper
OrderController
import com.example.api.bean.UserAddress;
import com.example.api.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class OrderController {
@Autowired
OrderService orderService;
@RequestMapping("initOrder")
public List<UserAddress> initOrder(@RequestParam("userId") String userId){
return orderService.initOrder(userId);
}
}
OrderServiceImpl
import com.alibaba.dubbo.config.annotation.Reference;
import com.example.api.bean.UserAddress;
import com.example.api.service.OrderService;
import com.example.api.service.UserService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class OrderServiceImpl implements OrderService {
@Reference //实现远程调用
UserService userService;
@Override
public List<UserAddress> initOrder(String userId) {
System.out.println("userId = " + userId);
//1.查询用户收货地址
List<UserAddress> addressList = userService.getUserAddressList(userId);
return addressList;
}
}
启动类
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
然后我们访问8081端口
此时我们在刷新监控中心和控制中心