Nest Nats suuports two way out from box, you just need to configure MessagePattern
https://docs.nestjs.com/microservices/basics#request-response
// service 1: data-source controller
@Controller()
export class AppController {
constructor(
@Inject(NATS) private readonly nats: ClientNats,
) {}
@MessagePattern('data-source.status')
async status() {
return 'Ok!';
}
}
// service 2 somewere in the code...
import { firstValueFrom } from 'rxjs';
...
const req = this.nats.send('data-source.status', {});
const res = await firstValueFrom(req).catch((e) => console.error(e));
console.log({ res });
...
// out
{ res: 'Ok!' }