Обрабатывается ли Observable в Lambda иначе, чем Promise? - PullRequest
0 голосов
/ 10 июля 2019

Мы используем пакет NestJS CQRS в нашем приложении. Этот пакет позволяет нам создавать «саги», генерируя наблюдаемые RxJS, которые запускают различные фоновые задачи.

Однако мы заметили, что при запуске приложения на AWS Lambda функция завершается раньше, чем выполняются фоновые задачи.

Обрабатывается ли Observable в Лямбде иначе, чем Обещание?

@Saga()
aggregateCreated = (events$: Observable<any>): Observable<AggregateCommand> => {
        return events$.pipe(
            ofType(AggregateCreatedEvent),
            map(async (event: AggregateCreatedEvent) => {

                const result = this.queueService.sendMessage(
                    "http://XXXXXXX", { test: "MessageContent });

                await Promise.all([result]);
                return;
            }),
            flatMap(c => c)
        );
    }

1 Ответ

0 голосов
/ 12 июля 2019

API Observable и Promise сильно различаются, и мне еще предстоит найти любую документацию, которая поддерживает возврат Observable в лямбда-функции AWS.


Несколько дополнительных мыслей: выход @nestjs/cqrs Saga - это наблюдаемая команда.Модуль подписывается на Observable и выполняет новую команду через CommandBus.

С моим пониманием функций AWS Lambda и модуля @nestjs/cqrs я не верю, что вы сможете вернутьObservable, не говоря уже о Promise, из @Saga.

...