Usuários mais ativos no mês 11/2019
  1. henrique.muller

    843 Pontos

  2. paulo.silva

    831 Pontos

  3. maicon.pereira

    582 Pontos

  4. juliano.pezzini

    388 Pontos

  5. leandro.piscke

    371 Pontos

  6. dirceu.schlickmann

    347 Pontos

  7. diuari.molinari

    331 Pontos

  8. Camila

    288 Pontos

  9. bruno.cardoso

    273 Pontos

  10. Rafael Leonhardt

    256 Pontos

Tem como disparar um BTL apenas se a transação se completar?

+2 votos
17 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"?
perguntou 6 dias atrás por maicon.pereira (582 pontos)
Estou usando BTL + ActiveMQ

1 Resposta

0 votos
 
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?
respondida 3 dias atrás por joao.melo (167 pontos)
selecionada 3 dias atrás por maicon.pereira
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.

Perguntas relacionadas

+2 votos
1 resposta 14 visitas
+2 votos
1 resposta 14 visitas
14 visitas perguntou 6 dias atrás por maicon.pereira (582 pontos)
+2 votos
1 resposta 22 visitas
...