В настоящее время я настраиваю систему публикации статей (вырезанную в стиле CQRS) с сагой, которая прослушивает, готова ли статья к публикации. Сага выглядит следующим образом:
@Injectable()
export class ArticleSaga {
@Saga()
articleRegister = (events$: Observable<any>): Observable<ICommand> => {
return events$
.pipe(
ofType(RegisterArticleEvent),
delay(1000),
map((event: {
uuid: string,
statut: string,
createBodyArticleDto: CreateBodyArticleDto,
}) => {
return new PublishArticleCommand(event.uuid, event.statut, event.createBodyArticleDto);
}),
);
}
}
Но когда я создаю статью, команда, выполняющая эту операцию, работает хорошо, но сага, которая слушает эту команду для запуска команды публикации, выдает ошибку, которую я не делаюпонять и то, что я не знаю, как решить. Ошибка выглядит следующим образом:
.../node_modules/rxjs/internal/util/hostReportError.js:4
setTimeout(function () { throw err; }, 0);
CommandHandlerNotFoundException {
message: 'CommandHandler not found exception!'
}
Обработчик PublishArticleHandler:
@CommandHandler(PublishArticleCommand)
export class PublishArticleHandler implements ICommandHandler<PublishArticleCommand> {
constructor(
private readonly publicRepository: PublicRepository,
) {}
async execute(command: PublishArticleCommand) {...}
и PublishArticleCommand:
export class PublishArticleCommand implements ICommand {
constructor(
public readonly uuid: string,
public readonly statut: string,
public readonly createBodyArticleDto: CreateBodyArticleDto,
) {}
}
Если кто-то понимает эту проблему и имеет решение, ябыл бы очень рад прочитать это. ;)