编写dubbo提供者
创建一个usermservice项目,只写一个接口,通过maven insertll打包到本地。
package com.user.api;
public interface UserMService {
String get();
}
创建一个userproducer项目,导入usermservice jar包,引入springboot依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
</parent>
<dependencies>
<!-- dubbo依赖 -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>usermservice</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
实现UserMService 接口:@Service要用dubbo的
import com.user.api.UserMService;
import org.apache.dubbo.config.annotation.Service;
@Service
public class UserServiceImpl implements UserMService {
public String get() {
return "dubbo service";
}
}
编写启动类,@DubboComponentScan 扫描dubbo @Service注解的接口类,注入到dubbo服务中
@DubboComponentScan
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
添加配置文件:
## application.yaml文件
spring:
application:
name: user-service-producer
profiles:
active: config
##application-config.properties文件
dubbo.application.name=spring-provider
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.address=N/A
启动后可以看到以下日志,接口便以注册到dubbo服务
[DUBBO] Export dubbo service com.user.api.UserMService to url dubbo://192.168.1.45:20880/com.user.api.UserMService?anyhost=true&application=spring-provider&bind.ip=192.168.1.45&bind.port=20880&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.user.api.UserMService&methods=get&pid=15408&qos.enable=false&release=2.7.5&revision=1.0-SNAPSHOT&side=provider×tamp=1604935522384, dubbo version: 2.7.5, current host: 192.168.1.45
编写消费者
创建一个消费者类dubboconsumer。添加maven依赖:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.example</groupId>
<artifactId>usermservice</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.5</version>
</dependency>
</dependencies>
编写启动类:@Reference注入dubbo服务,url为上述日志中的路径
@SpringBootApplication
public class ConsumerApplication {
@Reference(url="dubbo://192.168.1.45:20880/com.user.api.UserMService")
private UserMService userMService;
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class);
}
@Bean
public ApplicationRunner runner(){
return args -> System.out.println(userMService.get());
}
}
启动消费者服务可以看到控制台输出: