当前位置:实例文章 » 其他实例» [文章]Spring Cloud Alibaba【创建支付服务生产者、创建服务消费者 、Dubbo和OpenFeign区别 、微服务接入OpenFeign】(二)

Spring Cloud Alibaba【创建支付服务生产者、创建服务消费者 、Dubbo和OpenFeign区别 、微服务接入OpenFeign】(二)

发布人:shili8 发布时间:2025-01-20 13:19 阅读次数:0

**Spring Cloud Alibaba系列文章之二**

在上一篇文章中,我们已经完成了支付服务的生产者端的搭建。今天我们将继续完善我们的微服务体系,创建一个服务消费者,并对Dubbo和OpenFeign进行比较。

### 创建服务消费者首先,我们需要创建一个新的Spring Boot项目,用于作为服务消费者。新建一个Maven项目,名称为`service-consumer`。

**pom.xml**

xml<dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
 <dependency>
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-alibaba-registry</artifactId>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 </dependency>
</dependencies>

**application.yml**
ymlserver:
 port:8080spring:
 cloud:
 alibaba:
 registry:
 address:  />在`ServiceConsumerApplication.java`中,我们需要添加一个`@EnableDiscoveryClient`注解来开启服务发现功能。
java@SpringBootApplication@EnableDiscoveryClientpublic class ServiceConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceConsumerApplication.class, args);
}
}
接下来,我们需要在`application.yml`中配置服务注册中心的地址。

### Dubbo和OpenFeign区别Dubbo和OpenFeign都是Java语言下的RPC框架,用于实现微服务之间的通信。下面是它们的一些主要区别:

* **功能**:Dubbo是一个完整的RPC框架,提供了服务发现、负载均衡、容错等功能,而OpenFeign则是一个轻量级的RPC框架,只提供了服务发现和负载均衡功能。
* **性能**:Dubbo相比于OpenFeign具有更好的性能,因为它使用了多种优化技术,如缓存、线程池等,而OpenFeign则主要依赖于Netty来实现高性能通信。
* **易用性**:OpenFeign由于其轻量级的特点,更加容易上手和使用,而Dubbo则需要更深入地了解其内部机制。

### 微服务接入OpenFeign在`ServiceConsumerApplication.java`中,我们需要添加一个`@EnableDiscoveryClient`注解来开启服务发现功能。
java@SpringBootApplication@EnableDiscoveryClientpublic class ServiceConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceConsumerApplication.class, args);
}
}
接下来,我们需要在`application.yml`中配置服务注册中心的地址。

**application.yml**
ymlserver:
port:8080spring:
cloud:
alibaba:
registry:
address: />然后我们可以使用OpenFeign来实现微服务之间的通信。例如,我们可以在`ServiceConsumerApplication.java`中添加一个`@FeignClient`注解来指向支付服务。
java@SpringBootApplication@EnableDiscoveryClientpublic class ServiceConsumerApplication {
 public static void main(String[] args) {
 SpringApplication.run(ServiceConsumerApplication.class, args);
 }
}

**application.yml**
ymlserver:
 port:8080spring:
 cloud:
 alibaba:
 registry:
 address:  /> client:
 config:
 default:
 connectTimeoutMillis:5000 readTimeoutMillis:10000

在`PaymentController.java`中,我们可以使用OpenFeign来实现支付服务的接口。
java@RestController@RequestMapping("/payment")
public class PaymentController {
 @Autowired private PaymentService paymentService;

 @GetMapping("/get/{id}")
 public Result get(@PathVariable("id") Long id) {
 return paymentService.get(id);
 }
}

在`PaymentService.java`中,我们可以使用OpenFeign来实现支付服务的业务逻辑。
java@Servicepublic class PaymentService {
 @Autowired private PaymentClient paymentClient;

 public Result get(Long id) {
 return paymentClient.get(id);
 }
}

在`PaymentClient.java`中,我们可以使用OpenFeign来实现支付服务的接口。
java@Componentpublic class PaymentClient {
 @Autowired private RestTemplate restTemplate;

 public Result get(Long id) {
 String url = " + id;
 return restTemplate.getForObject(url, Result.class);
 }
}

这样我们就可以使用OpenFeign来实现微服务之间的通信了。

### 总结在本文中,我们完成了支付服务生产者的搭建,并创建了一个服务消费者。然后我们对Dubbo和OpenFeign进行比较,了解了它们的一些主要区别。最后,我们使用OpenFeign来实现微服务之间的通信。

其他信息

其他资源

Top