0

我有点问题

我在 NestJS 中使用 Kafka 和 CQRS

我的问题是:在写入过程中处理错误的最佳方法是什么?

  1. 我将请求发送到 web api 到我的 nestjs 应用程序

  2. 我有并且事件ObjectedCreatedEvent在创建后在事件总线上发送并将其写入kafka(confluent.cloud)。

  3. Kafka 响应错误 87,因为针对 json 模式的消息验证失败(到目前为止还可以)

  4. 如何正确响应发生错误的 web api?

刚刚在此过程中启动了另一个侦听器?我希望 kafka(融合云)至少必须针对此类事情进行讨论。

我只会有一个事件ObjectValdiationFailedEvent并将其放到事件总线上。

4

1 回答 1

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,以便您可以相应地处理它。

于 2020-06-15T18:07:50.147 回答