欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java Spring Cloud Alibaba-Dubbo:(三)代码的完善

程序员文章站 2022-07-15 09:55:41
...

1.dubbo-api 代码的完善

1.1 定义 Dubbo 服务接口

  • Dubbo 服务接口是服务提供方与消费方的远程通讯契约,通常由普通的 Java 接口 (interface)来声明
    Java Spring Cloud Alibaba-Dubbo:(三)代码的完善
  • 代码如下:
public interface EchoService { 
	String echo(String message); 
}

1.2 项目的打包

  • Api 项目主要是为了把 rpc 中定义的接口发布出去。
  • 我们可以使用 Maven 的普通打包方式把编译后的 class 文件打包为 jar。
    Java Spring Cloud Alibaba-Dubbo:(三)代码的完善
  • 打包成功后,项目的 jar 位于:
    Java Spring Cloud Alibaba-Dubbo:(三)代码的完善

2.dubbo-provider 代码的完善

2.1 添加依赖

  • 在 dubbo-provider 的 pom.xml 的 dependencies 添加以下的依赖
<dependencies> 
	<dependency> 
		<groupId>com.dqcgm</groupId> 
		<artifactId>dubbo-api</artifactId> 
		<version>1.0</version> 
	</dependency> 
</dependencies>

2.2 实现 dubbo-api 里面定义的接口

Java Spring Cloud Alibaba-Dubbo:(三)代码的完善

  • 代码的内容如下:
@Service 
public class EchoServiceImpl implements EchoService { 
	@Override 
	public String echo(String message) { 
		return "[echo] Hello, " + message; 
	} 
}

2.3 添加配置文件

Java Spring Cloud Alibaba-Dubbo:(三)代码的完善

dubbo: 
	scan:
		# dubbo 服务扫描基准包
		base-packages: com.dqcgm.service.impl
	cloud:
		subscribed-services: dubbo-provider
	protocol:
		# dubbo 协议
		name: dubbo
		# dubbo 协议端口( -1 表示自增端口,从 20880 开始)
		port: -1
	registry:
		# 挂载到 Spring Cloud 注册中心
		address: spring-cloud://localhost

spring:
	application:
		# Dubbo 应用名称
		name: dubbo-provider
	main:
		# Spring Boot 2.1 需要设定
		allow-bean-definition-overriding: true
	cloud:
		nacos:
			# Nacos 服务发现与注册配置
			discovery:
				server-addr: localhost:8848

2.4 启动类

Java Spring Cloud Alibaba-Dubbo:(三)代码的完善

  • 代码如下:
@SpringBootApplication 
@EnableDiscoveryClient 
public class ProviderServiceApplication { 
	public static void main(String[] args) { 
		SpringApplication.run(ProviderServiceApplication.class, args) ; 
	} 
}

3.dubbo-consumer 代码的完善

3.1 添加依赖

  • 在 dubbo-consumer 的 pom.xml 的 dependencies 添加以下的依赖
<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>com.dqcgm</groupId>
		<artifactId>dubbo-api</artifactId>
		<version>1.0</version>
	</dependency>
	<!-- Dubbo Spring Cloud Starter -->
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-starter-dubbo</artifactId>
	</dependency>
	<dependency>
		<groupId>com.alibaba.cloud</groupId>
		<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	</dependency>
</dependencies>

3.2 添加配置文件

Java Spring Cloud Alibaba-Dubbo:(三)代码的完善

  • 内容如下:
dubbo: 
	registry:
		# 挂载到 Spring Cloud 注册中心
		address: nacos://127.0.0.1:8848
	cloud:
		subscribed-services: dubbo-provider
server:
	port: 8080
spring:
	application:
		# Dubbo 应用名称
		name: dubbo-consumer
	main:
		# Spring Boot 2.1 需要设定
		allow-bean-definition-overriding: true
	cloud:
		nacos:
			# Nacos 服务发现与注册配置
			discovery:
				server-addr: 127.0.0.1:8848

3.3 启动类

Java Spring Cloud Alibaba-Dubbo:(三)代码的完善

  • 代码如下:
@EnableDiscoveryClient 
@SpringBootApplication 
@RestController 
public class ConsumerServiceApplication {
	@Reference 
	private EchoService echoService ;

	public static void main(String[] args) { 
		SpringApplication.run(ConsumerServiceApplication.class,args) ; 
	}

	@GetMapping("/rpc")
	public ResponseEntity<String> rpc(){
		return ResponseEntity.ok(String.format("调用结果为%s",echoService.echo("info")));
	}
}

4.远程调用测试

  • 启动 Nacos-Server
  • 启动 dubbo-provider
  • 启动 dubbo-consumer
  • 查看 Nacos 控制台:
    http://localhost:8848/nacos/
    Java Spring Cloud Alibaba-Dubbo:(三)代码的完善
  • 浏览器访问:
    Java Spring Cloud Alibaba-Dubbo:(三)代码的完善
  • 调用已经成功;