es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo manejar respuestas sincrónicas con Spring Cloud Data Flow

Estamos en proceso de diseñar la migración de nuestra aplicación monolítica de Java a microservicios para cumplir con diversos requerimientos de los clientes, como escalabilidad, alta disponibilidad, etc. La función principal de nuestra aplicación es el procesamiento de datos, es decir, extraer datos de una fuente, someterlos a 0 o más transformaciones y finalmente enviar el resultado a un destino. Por esta razón, estamos considerando el uso de Spring Cloud Data Flow ejecutándose en Kubernetes y Kafka para realizar el trabajo pesado por nosotros, con algunas aplicaciones de flujo personalizadas para manejar nuestra lógica de negocio.

Sin embargo, hay algo en lo que aún no hemos encontrado una solución, y es cómo podría manejar respuestas síncronas a las solicitudes enviadas a través de una fuente HTTP, especialmente cuando se requiere algún procesamiento antes de responder. Por ejemplo, supongamos que recibimos una solicitud que contiene dos cantidades diferentes en un paquete JSON. Luego, pasamos esto a un transformador personalizado de “suma” que devuelve la suma de estas cantidades y necesita enviar el resultado de vuelta a la parte que hizo la llamada. Sin embargo, debido a que el transformador es un proceso completamente separado que recibe los datos consumiéndolos de un tema de Kafka, no tiene acceso a la conexión HTTP original para responder.

¿Es esto algo posible con Spring Cloud Data Flow, tal vez combinándolo con algo como Spring Cloud Gateway para administrar la conexión HTTP? ¿O estamos buscando en la dirección equivocada por completo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en Java, Spring, microservicios, sincrónicos y Spring Cloud Data Flow, puedo sugerir que Spring Cloud Data Flow puede manejar respuestas síncronas a las solicitudes enviadas a través de una fuente HTTP. Además, se puede utilizar Spring Cloud Gateway para gestionar la conexión HTTP.

    Para resolver el ejemplo específico mencionado, una opción es crear dos aplicaciones personalizadas de flujo de datos; primero, una fuente HTTP personalizada que envía las solicitudes a un transformador personalizado de “adición” (que realiza el procesamiento requerido) y, segundo, un destino HTTP personalizado que recibe las respuestas del transformador y las envía de vuelta al llamante original.

    Alternativamente, para utilizar Spring Cloud Data Flow con puntos finales HTTP existentes, se puede crear una aplicación fuente HTTP personalizada para escuchar las solicitudes entrantes, transformarlas en un mensaje y enviarlas a un tema Kafka donde se realiza el procesamiento mediante el transformador de adición. El mensaje de Kafka, incluido el resultado, puede leerse nuevamente mediante una aplicación destino HTTP personalizada y enviarse de vuelta al llamante original.

    En resumen, Spring Cloud Data Flow puede manejar respuestas síncronas a las solicitudes enviadas a través de una fuente HTTP, aprovechando aplicaciones de flujo personalizadas o combinándolo con Spring Cloud Gateway para gestionar la conexión HTTP.

Comments are closed.