Tengo un caso de uso para responder a una llamada API al cliente que debería ocurrir en Sync. Pero dentro de la ejecución de la API, el sistema A necesita publicar un mensaje kafka en un sistema B diferente y el sistema B devuelve una respuesta al Sistema A que consume y debe responder al cliente como respuesta API.
Entonces, aquí este problema tiene un modelo pub-sub asíncrono y también manejo de la API de sincronización. Puedo manejar el pub-sub con el productor y el consumidor como dos métodos @Async diferentes, pero encuentro un problema al correlacionar ambos dentro de la ejecución de sincronización.
El hilo principal que generó la API puede esperar a que el consumidor responda, pero eso se convierte en un hilo de bloqueo.
Cualquier sugerencia sobre la implementación de este muy apreciada.
Gracias
No dijo en qué lenguaje de programación están escritas las partes sincronizadas y asincrónicas, pero en general debe usar el patrón de respuesta de solicitud asincrónica descrito en el libro EIP aquí http://www.enterpriseintegrationpatterns.com/patterns/conversation/RequestResponse. html
La aplicación que maneja la API de sincronización (como una llamada API REST a través de HTTP) publicaría en un tema de solicitud, incluido en el mensaje de solicitud un CorrelationID único (que genera en su aplicación) y luego, en el otro extremo, su Async La aplicación puede procesar estas solicitudes desde el tema de la solicitud y responder a un tema de respuesta utilizando el ID de correlación como clave y/o incluyéndolo en los mensajes de respuesta (para que el solicitante original sepa qué respuesta correlacionar con qué solicitud).