1.引入
<properties>
<dubbo-spring-boot-starter.version>2.7.5</dubbo-spring-boot-starter.version>
<dubbo-registry-nacos.version>2.7.5</dubbo-registry-nacos.version>
<spring-cloud-starter-alibaba-nacos-config.version>2021.1</spring-cloud-starter-alibaba-nacos-config.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo-spring-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>${dubbo-registry-nacos.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
2.配置文件
dubbo:
application:
name: ${spring.application.name}
qos-enable: false
qos-accept-foreign-ip: false
registry:
address: ${DUBBO_REGISTRY_ADDR:nacos://172.168.1.1:32000}
consumer:
timeout: 4000
protocol:
name: dubbo
port: 20880
spring:
main:
allow-bean-definition-overriding: true
3.启动类加注解@EnableDubbo
@EnableDubbo
@EnableDiscoveryClient
@EnableAsync(proxyTargetClass = true)
@EnableFeignClients
@SpringBootApplication
public class ProjectApplication {
public static void main(String[] args) {
SpringApplication.run(ProjectApplication.class, args);
}
}
4.编写接口和实体类供生产者和消费者使用
public interface IProviderService {
List<ProviderTestDTO> queryList();
}
@Getter
@Setter
@Accessors(chain = true)
@ApiModel(description = "dubbo测试调用实体类,必须实现接口Serializable ")
public class ProviderTestDTO implements Serializable {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "名字")
private String name;
@ApiModelProperty(value = "时间")
private Date time;
}
5.生产者实现接口
import org.apache.dubbo.config.annotation.Service;
@Service
public class ProviderServiceImpl implements IProviderService {
@Override
public List<ProviderTestDTO> queryList() {
final List<ProviderTestDTO> list = new ArrayList<>();
list.add(new ProviderTestDTO()
.setTime(new Date())
.setId(1)
.setName("名字"));
return list;
}
}
6.消费者使用
@Api(value = "TestDubboController", tags = "dubbo调用测试")
@RestController
@RequestMapping("/v1/dubbo")
public class TestDubboController {
@Reference
private IProviderService providerService;
@ApiOperation(value = "测试dubbo调用")
@GetMapping("/list")
public APIResponse<List<MapListResponseBean>> list() {
final List<ProviderTestDTO> providerTestDTOS = providerService.queryList();
return APIResponseUtils.success(providerTestDTOS);
}
}