+3 votos
200 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 (632 pontos) | 200 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 (183 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 Aug 2025
    200 pontos
    Melhores 2025 Jul 28 - Aug 03
    1. Larson

      156 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    517 perguntas
    566 respostas
    389 comentários
    704 usuários