Files
java-design-patterns/localization/es/aggregator-microservices
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
..

title, category, language, tag
title category language tag
Aggregator Microservices Architectural es
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.

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.

@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.

@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.

curl http://localhost:50004/product
{"title":"The Product Title.","productInventories":5}

Diagrama de clase

alt text

Aplicabilidad

Utilice el patrón Agregador de microservicios (Aggregator Microservices) cuando necesite una API unificada para varios microservicios, independientemente del dispositivo cliente.

Créditos