Kaua3045 / ecommerce

Ecommerce project, to manage products, nfe, orders, using clean architecture and DDD
3 stars 0 forks source link

Precisamos lidar quando duas instancias tentam salvar a mesma versão e recebemos uma constraint violation exception #97

Closed Kaua3045 closed 6 months ago

Kaua3045 commented 7 months ago

Precisa de atenção aqui, se por algum motivo duas instancias pegar a mesma mensagem e tentar salvar 1 com a versão e o payload identifier igual, teremos uma constraint violation exception, se recebermos essa exception, podemos só ignorar a mensagem ou então tentar re-processar que talvez não seria nada correto. Talvez o melhor seja só redirecionar ela pra DLT com o erro de constraint violation exception

this.productGateway.findById(aId)
                .ifPresentOrElse(aProduct -> {
                    this.saveProductUseCase.execute(aProduct);
                    // TODO: Need attention here, save event possible to throws unique constraint violation
                    //  because the payload identifier and versions is the same
                    saveEventMetadata(aDomainEvent, aId);
                    ack.acknowledge();
                    LOG.info(EVENT_RECEIVED_MESSAGE, type, aId);
                }, () -> {
                    LOG.debug(NOT_FOUND_MESSAGE, aId);
                    this.eventMetadataGateway.deleteByEventId(getEventIdHeaderValue(message));
                    ack.nack(Duration.ofSeconds(5));
                });