Files
java-design-patterns/localization/es/aggregator-microservices/README.md
T
Luis Mateo Hincapié Martinez dc7495e8bd translation: Translated all creational patterns category to Spanish (Task of issue #2277) (#2813)
* Typo corrections

* bridge pattern translated to spanish

* builder pattern translated to spanish

* context-object pattern translated to spanish

* converter pattern translated to spanish

* dependency injection pattern translated to spanish

* factory pattern translated to spanish

* factory-kit pattern translated to spanish

* factory-method pattern translated to spanish

* monostate pattern translated to spanish

* multiton pattern translated to spanish

* object mother pattern translated to spanish

* object pool pattern translated to spanish

* property pattern translated to spanish

* prototype pattern translated to spanish

* registry pattern translated to spanish

* step builder pattern translated to spanish

* value object pattern translated to spanish

* typo corrections and resources urls refactor

* grammar corrections

* Add image to each pattern

---------

Co-authored-by: luismateoh <luismateohm@gmail.com>
Co-authored-by: luis.hincapie <luis.hincapie@blankfactor.com>
2024-03-23 11:53:54 +02:00

108 lines
3.6 KiB
Markdown

---
title: Aggregator Microservices
category: Architectural
language: es
tag:
- Cloud distributed
- Decoupling
- Microservices
---
## Propósito
El usuario realiza una sola llamada al servicio del agregador y, a continuación, el agregador llama a cada microservicio relevante.
## Explicación
Ejemplo del mundo real
> Nuestro mercado web necesita información sobre los productos y su inventario actual. Hace una llamada a un agregador
> servicio que a su vez llama al microservicio de información del producto y al microservicio de inventario del producto que devuelve la
> información combinada.
En palabras sencillas
> Aggregator Microservice recopila datos de varios microservicios y devuelve un agregado para su procesamiento.
StackOverflow dice
> Aggregator Microservice invoca múltiples servicios para lograr la funcionalidad requerida por la aplicación.
**Ejemplo programático**
Empecemos por el modelo de datos. Aquí está nuestro `Product`.
```java
public class Product {
private String title;
private int productInventories;
// getters and setters ->
...
}
```
A continuación, podemos presentar nuestro microservicio `Aggregator` (Agregador de microservicios). Contiene él `ProductInformationClient` (Información del producto del cliente) y él
`ProductInventoryClient` (Inventario del producto del cliente) de los clientes para llamar a los respectivos microservicios.
```java
@RestController
public class Aggregator {
@Resource
private ProductInformationClient informationClient;
@Resource
private ProductInventoryClient inventoryClient;
@RequestMapping(path = "/product", method = RequestMethod.GET)
public Product getProduct() {
var product = new Product();
var productTitle = informationClient.getProductTitle();
var productInventory = inventoryClient.getProductInventories();
//Fallback to error message
product.setTitle(requireNonNullElse(productTitle, "Error: Fetching Product Title Failed"));
//Fallback to default error inventory
product.setProductInventories(requireNonNullElse(productInventory, -1));
return product;
}
}
```
Esta es la esencia de la implementación de microservicios de información. El microservicio de inventario es similar, simplemente regresa
recuentos de inventario.
```java
@RestController
public class InformationController {
@RequestMapping(value = "/information", method = RequestMethod.GET)
public String getProductTitle() {
return "The Product Title.";
}
}
```
Ahora llamando a nuestra REST API `Aggregator` devuelve la información del producto.
```bash
curl http://localhost:50004/product
{"title":"The Product Title.","productInventories":5}
```
## Diagrama de clase
![alt text](./aggregator-service/etc/aggregator-service.png "Aggregator Microservice")
## Aplicabilidad
Utilice el patrón Agregador de microservicios (Aggregator Microservices) cuando necesite una API unificada para varios microservicios, independientemente del dispositivo cliente.
## Créditos
* [Patrones de diseño de microservicios] (http://web.archive.org/web/20190705163602/http://blog.arungupta.me/microservice-design-patterns/)
* [Patrones de microservicios: Con ejemplos en Java](https://www.amazon.com/gp/product/1617294543/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=1617294543&linkId=8b4e570267bc5fb8b8189917b461dc60)
* [Patrones de arquitectura: Descubra patrones esenciales en el ámbito más indispensable de la arquitectura empresarial](https://www.amazon.com/gp/product/B077T7V8RC/ref=as_li_qf_asin_il_tl?ie=UTF8&tag=javadesignpat-20&creative=9325&linkCode=as2&creativeASIN=B077T7V8RC&linkId=c34d204bfe1b277914b420189f09c1a4)