基础环境
本文基于Spring Boot模块使用Dubbo
配置方式
以下配置方式,优先级从低到高排列
全局级配置,服务提供者
dubbo:
provider:
timeout: 2000
全局级配置,服务消费者
dubbo:
consumer:
timeout: 2000
服务级配置,服务提供者
package com.oliverclio.order.service;
import com.oliverclio.api.order.dto.OrderDto;
import com.oliverclio.api.order.service.OrderService;
import com.oliverclio.order.mapper.OrderMapper;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
@DubboService(timeout = 2000)
public class OrderServiceImpl implements OrderService {
@Override
public void createOrder(OrderDto orderDto) {
System.out.println("createOrder invoked!");
System.out.println(orderDto.getUserId());
System.out.println(orderDto.getCommodityCode());
System.out.println(orderDto.getCount());
}
}
服务级配置,服务消费者
package com.oliverclio.business.controller;
import com.oliverclio.api.order.dto.OrderDto;
import com.oliverclio.api.order.service.OrderService;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@AllArgsConstructor
public class BusinessController {
@DubboReference(timeout = 2000)
private OrderService orderService;
@PostMapping("purchase")
public String purchase(String userId, String commodityCode, Integer orderCount) {
OrderDto orderDto = new OrderDto();
orderDto.setUserId(userId);
orderDto.setCommodityCode(commodityCode);
orderDto.setCount(orderCount);
orderService.createOrder(orderDto);
return "ok";
}
}
方法级配置,服务提供者
package com.oliverclio.order.service;
import com.oliverclio.api.order.dto.OrderDto;
import com.oliverclio.api.order.service.OrderService;
import com.oliverclio.order.mapper.OrderMapper;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService;
@DubboService(parameters = {
"createOrder.timeout", "2000"
})
public class OrderServiceImpl implements OrderService {
@Override
public void createOrder(OrderDto orderDto) {
System.out.println("createOrder invoked!");
System.out.println(orderDto.getUserId());
System.out.println(orderDto.getCommodityCode());
System.out.println(orderDto.getCount());
}
}
方法级配置,服务消费者
package com.oliverclio.business.controller;
import com.oliverclio.api.order.dto.OrderDto;
import com.oliverclio.api.order.service.OrderService;
import lombok.AllArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@AllArgsConstructor
public class BusinessController {
@DubboReference(parameters = {
"createOrder.timeout", "2000"
})
private OrderService orderService;
@PostMapping("purchase")
public String purchase(String userId, String commodityCode, Integer orderCount) {
OrderDto orderDto = new OrderDto();
orderDto.setUserId(userId);
orderDto.setCommodityCode(commodityCode);
orderDto.setCount(orderCount);
orderService.createOrder(orderDto);
return "ok";
}
}
常用配置
- 超时时间,
timeout
- 服务消费者在启动时是否检查服务提供者的存在,
check
- 容错机制,
cluster
- 重试次数,
retries
- 服务降级处理,
mock
- 负载均衡策略,
loadbalance
- 服务分组,
group
- 服务版本,
version
PREVIOUSDubbo服务架构模块搭建
NEXTPython环境搭建