1.加入依赖(provider)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.0</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<dubbo.version>3.1.8</dubbo.version>
</properties>
<!-- Apache Dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-bom</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<!-- Dubbo Registry Nacos -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>${dubbo.version}</version>
</dependency>
2.添加配置
server.port=8091
dubbo.application.name=myprovider1
# Spring boot application
spring.application.name=myprovider1
# Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
dubbo.scan.base-packages=com.example
# Dubbo Protocol
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
## Dubbo Registry
#dubbo.registry.address=N/A
## nacos config
#nacos.config.server-addr=localhost:8848
dubbo.registry.address = nacos://192.168.22.200:8848
# all (默认,双注册) instance(应用级注册) service (接口级注册)
dubbo.application.register-mode= instance
dubbo.registry.use-as-config-center=false
logging.config=classpath:log4j.properties
3.启动类添加
@EnableDubbo
4.使用
@RestController
@RequestMapping("/test")
public class Provider1Controller {
@DubboReference(version = "1.0",group="hello")
private HelloService demoService;
@DubboReference(version = "1.0",group="User")
private UserService userService;
@GetMapping()
public String getService() {
String hello = demoService.hello();
System.out.println(hello + "======================success========================");
User user = demoService.getUser();
System.out.println(user.toString());
String serviceName = userService.getServiceName();
System.out.println("serviceName" + serviceName);
System.out.println("serviceName" + userService.getUserById("123"));
return "test-success";
}
}
4.1 provider需要实现接口
@DubboService(version = "1.0",group="hello")
public class HelloServiceImpl implements HelloService {
/**
* The default value of ${dubbo.application.name} is ${spring.application.name}
*/
@Value("${dubbo.application.name}")
private String serviceName;
@Override
public String hello() {
// TODO Auto-generated method stub
return "服务提供者,成功调用hello";
}
@Override
public String test() {
// TODO Auto-generated method stub
return "服务提供者,成功调用 test";
}
@Override
public User getUser() {
User user = new User();
List<String> lists = new ArrayList<String>();
lists.add("beijing");
lists.add("shagnhai");
lists.add("tianjing");
user.setAddr(lists);
user.setUserName(serviceName);
user.setAge(23);
return user;
}
}
5.consumer配置:
server.port=8080
server.servlet.context-path=/
dubbo.application.name=myCustomer1
# Spring boot application
spring.application.name=myCustomer1
# Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
dubbo.scan.base-packages=com.example
# Dubbo Application
## The default value of dubbo.application.name is ${spring.application.name}
## dubbo.application.name=${spring.application.name}
# Dubbo Protocol
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
#负载均衡轮询
dubbo.consumer.loadbalance=roundrobin
## Dubbo Registry
dubbo.application.register-mode= instance
#nacosConfig
#nacos.config.server-addr=localhost:8848
dubbo.registry.address = nacos://192.168.22.200:8848
# not provided service, only play a customer role
dubbo.registry.register=false
#ture启动自定检查服务端是否存在,不存在无法启动,FALSE 不检查可以启动
dubbo.consumer.check=false
#dubbo.consumer.timeout=
dubbo.application.register-consumer=true
logging.config=classpath:log4j.properties