一、新建項目
新建項目,只放置接口,用於暴露 Dubbo 服務接口
public interface GreetingService {
String greeting();
}
二、provider
本文以上文中的 Service1 作為 provider,以 Service2 作為 consumer
2.1 添加依賴
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
2.2 實現接口
@Service
@Component
public class GreetingServiceImpl implements GreetingService {
@Value("${server.port:0}")
private Integer port;
@Override
public String greeting() {
return "hello from port: " + port;
}
}
@Service 為 org.apache.dubbo.config.annotation.Service (舊的版本為 com.alibaba.dubbo.config.annotation.Service),此處的 @Service 只能供 Dubbo RPC 調用,如果需要像之前一樣正常在 Controller 層調用需要再添加 @Component 注解 (或者直接不添加 @Component 在項目內也通過 Dubbo 調用)
2.3 新增配置
dubbo:
scan:
base-packages: com.karonda.service1.service.impl
protocol:
name: dubbo
port: -1 # -1 表示端口自增
registry:
address: nacos://192.168.92.1:8848
三、consumer
3.1 調用服務
@Reference
private GreetingService greetingService;
@RequestMapping("/dubboGreeting")
public String dubboGreeting() {
return greetingService.greeting();
}
@Reference 為 org.apache.dubbo.config.annotation.Reference (舊的版本為 com.alibaba.dubbo.config.annotation.Reference)
3.2 新增配置
dubbo:
protocol:
name: dubbo
port: -1
registry:
address: nacos://192.168.92.1:8848
consumer:
check: false # 不加此配置項目啟動時可能會失敗
啟動服務,訪問 http://localhost:8079/dubboGreeting 可以看到結果
