+2 votos
34 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 (610 pontos) | 34 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 (169 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 Jan 2020
  1. diuari.molinari

    38 Pontos

  2. juliano.pezzini

    36 Pontos

  3. Gregory

    15 Pontos

  4. leandro.piscke

    15 Pontos

  5. willian.metalsystem

    12 Pontos

  6. alan.jantz

    12 Pontos

  7. regina.silva

    9 Pontos

  8. Cesar.Albuquerque

    8 Pontos

  9. wilson.junior

    8 Pontos

  10. maicon.pereira

    6 Pontos

200 pontos
Melhores 2020 Jan 13 - 19
  1. Cesar.Albuquerque

    8 Pontos

  2. diuari.molinari

    7 Pontos

  3. metalsystem.gustavo

    4 Pontos

  4. willian.metalsystem

    4 Pontos

  5. leandro.piscke

    4 Pontos

  6. bruno.reis

    2 Pontos

  7. charles.sima

    2 Pontos

395 perguntas
447 respostas
329 comentários
491 usuários