NestJs cqrs исключение и обработка ошибок в kafka
У меня небольшая проблема,
Я использую Kafka с CQRS в NestJS.
Мой вопрос: как лучше всего обрабатывать ошибки в процессе записи?
Я отправляю запрос через веб-API в свое приложение nestjs
У меня есть и событие
ObjectedCreatedEvent
отправляет его в шину событий после создания и записывает в kafka (confluent.cloud).Kafka отвечает с ошибкой 87, потому что проверка сообщения по схеме json не удалась (пока это нормально)
Как я могу правильно отреагировать на веб-api, что произошла ошибка?
Только что запустили еще одного слушателя в процессе? Я ожидал, что кафка (слившееся облако) должен быть в теме хотя бы для таких вещей.
Я бы просто устроил мероприятие ObjectValdiationFailedEvent
и поместите его в шину событий.
1 ответ
Confluent Cloud здесь не поможет, поскольку это проблема клиента. Как ты можешь знать; Kafka получает все, что было сериализовано производителем, и просто сохраняет данные в выбранном разделе. В вашем случае данные не являются событием, покидающим клиент, что означает, что все, что вызывает эту ошибку 87, определенно не является серверной Kafka, а находится на стороне клиента.
Я бы посоветовал настроить любой обработчик исключений, который поддерживает ваш фреймворк NestJS. Я не разработчик Node.js (у меня был опыт работы с Java и Go), но беглый взгляд на документацию NestJS показывает, что этот фреймворк позволяет регистрировать фильтры, способные обрабатывать исключения. Например:
import { Catch, RpcExceptionFilter, ArgumentsHost } from '@nestjs/common';
import { Observable, throwError } from 'rxjs';
import { RpcException } from '@nestjs/microservices';
@Catch(RpcException)
export class ExceptionFilter implements RpcExceptionFilter<RpcException> {
catch(exception: RpcException, host: ArgumentsHost): Observable<any> {
return throwError(exception.getError());
}
}
Больше информации здесь.
Итак, вы можете захотеть выяснить, какой слой выдает эту ошибку 87, чтобы вы могли обработать ее соответствующим образом.