Files
nest/packages/microservices/deserializers/kafka-response.deserializer.ts
2025-12-05 13:35:27 +01:00

35 lines
907 B
TypeScript

import { isUndefined } from '@nestjs/common/utils/shared.utils';
import { KafkaHeaders } from '../enums/kafka-headers.enum';
import { Deserializer, IncomingResponse } from '../interfaces';
/**
* @publicApi
*/
export class KafkaResponseDeserializer implements Deserializer<
any,
IncomingResponse
> {
deserialize(message: any, options?: Record<string, any>): IncomingResponse {
const id = message.headers[KafkaHeaders.CORRELATION_ID].toString();
if (!isUndefined(message.headers[KafkaHeaders.NEST_ERR])) {
return {
id,
err: message.headers[KafkaHeaders.NEST_ERR],
isDisposed: true,
};
}
if (!isUndefined(message.headers[KafkaHeaders.NEST_IS_DISPOSED])) {
return {
id,
response: message.value,
isDisposed: true,
};
}
return {
id,
response: message.value,
isDisposed: false,
};
}
}