+2 votos
143 visitas
No meu cenário, estou disparando um BTL para processamento assincrono de um registro que acabei de inserir.

O que acontece, é que as vezes o BTL começa a processar antes que a transação (de onde foi disparado) tenha finalizado.

Logo, o BTL falha pois o registro ainda não existe.

Neste sentido, pergunto se na tecnologia tem alguma forma de disparar o BTL apenas se o contexto transacional for "comitado"?
por (625 pontos) | 143 visitas
Estou usando BTL + ActiveMQ

1 Resposta

+1 voto
Melhor resposta
Fala Maicon, até onde sei o Worker do BTL está totalmente alheio ao contexto transacional de quem está enfileirando requisições. São processos distintos, então a resposta objetiva seria não, nesse momento não.

Uma forma de minimizar problemas, mas imagino que já estás fazendo algo parecido seria: salvar todos os registros de negócio antes e somente disparar a requisição do BTL imediatamente antes do commit.

Ou ainda, se no teu cenário tiveres controle da transação, qual seria o impacto de "comitar" todas as alterações de negócio, e somente enfileirar a requisição do BTL após esse commit?
por (187 pontos)
selecionada por
Um caso que tenho aqui, o disparo do BTL está no Saved de um registro.

Disparo um BTL para processamento desse registro.

Esse registro atualmente pode ser criado por várias origens: serviço, integrator, ....

Então eu não tenho um ponto final claro para fazer o disparo apenas nesse ponto ou avaliar se houve commit da transação.

Nesse cenário, a grande questão não é apenas se houverá ou não commit da transação, e sim que as vezes o processo gerado é um EDI (integrator) grande e demorado, e o processamento do BTL ocorre antes do complete da transação. Logo, o BTL não encontrará o registro que precisa ser processado.
Melhores Sep 2020
  1. Marco.Barros

    6 Pontos

  2. OllieCrawley

    5 Pontos

  3. SheliaLorenz

    5 Pontos

  4. KingAntonio

    5 Pontos

  5. bruno.rafael

    5 Pontos

  6. marcio.michelluzzi

    5 Pontos

  7. BlakeBeverly

    5 Pontos

  8. Amelia98M988

    5 Pontos

  9. ErickTaormin

    5 Pontos

  10. EwanCadwalla

    5 Pontos

200 pontos
Melhores 2020 Sep 21 - 27
  1. Marco.Barros

    6 Pontos

  2. OllieCrawley

    5 Pontos

  3. SheliaLorenz

    5 Pontos

  4. KingAntonio

    5 Pontos

  5. bruno.rafael

    5 Pontos

  6. marcio.michelluzzi

    5 Pontos

  7. BlakeBeverly

    5 Pontos

  8. maicon.pereira

    2 Pontos

443 perguntas
488 respostas
350 comentários
486 usuários