NestJs cqrs исключение и обработка ошибок в kafka

У меня небольшая проблема,

Я использую Kafka с CQRS в NestJS.

Мой вопрос: как лучше всего обрабатывать ошибки в процессе записи?

  1. Я отправляю запрос через веб-API в свое приложение nestjs

  2. У меня есть и событие ObjectedCreatedEvent отправляет его в шину событий после создания и записывает в kafka (confluent.cloud).

  3. Kafka отвечает с ошибкой 87, потому что проверка сообщения по схеме json не удалась (пока это нормально)

  4. Как я могу правильно отреагировать на веб-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, чтобы вы могли обработать ее соответствующим образом.

Другие вопросы по тегам