tengo dos servicios y los creé con nodejs y mecanografiado.
Quiero enviar y recibir mensajes entre estos dos servicios con reabitMQ.
lo hago con este codigo:
Editor :
await MessageBroker.Publish('coin', 'transaction', { type: MessageBrokerType.Transfer, to: 'to', amount: amount });Consumir :
MessageBroker.channel.consume(exchange + '.' + queue, async (msg: any) => { const { to, amount , type } = JSON.parse(msg.content); const transfer = await UnitOfWork.coinRepository.transfer(to, amount); console.log(to, amount); })funcionó y envió un mensaje del editor para consumir, pero tengo un problema.
necesito establecer el resultado para consumir y enviarlo para el editor.
por ejemplo, tal vez tengo un problema en esta línea UnitOfWork.coinRepository.transfer(to, amount); y debo enviar al editor un mensaje de error y, si la operación es exitosa, enviar un mensaje al suscriptor sobre el resultado exitoso.
ahora, ¿cómo puedo resolver este problema y establecer el resultado del mensaje entre dos servicios?
Lo que ha hecho hasta ahora es la implementación de pub/sub con RabbitMQ y lo que debe hacer es configurar una arquitectura basada en mensajes (RPC).
Este documento aclara lo que debe hacer perfectamente para un patrón RPC:
https://www.rabbitmq.com/tutorials/tutorial-six-javascript.html
Los ejemplos están escritos en Js pero seguramente puede cambiarlos a Typescript.
El mensaje controlado será manejado por correlationId que se usa para correlacionar las respuestas RPC con las solicitudes, eso es lo que necesita implementar, puede encontrar más información en el documento. Al final del día, si no tuvo éxito al implementarlo, pídame una muestra real con Typescript.