1
resposta

EneityManager não funciona ao receber a mensagem

Boa tarde.

O EntityManager não carrega direito ao receber a mensagem. Pelo que parece quando se seta o setMessageListener , é criada uma nova thread da qual o EntityManager não faz parte. Desse modo aparece o seguinte erro:

"transaction is required to perform this operation (either use a transaction or extended persistence context)"

Já tentei criar dentro do setMessageListner com o @PersistenceContext , mas mesmo assim não funciona. Gostaria de saber se tem indicações para o que fazer nesse caso para conseguir persistir a mensagem recebida no nosso banco de dados

1 resposta

Olá Vitor, tudo certo?

O problema que você está enfrentando ao usar o EntityManager dentro do setMessageListener pode estar relacionado à falta de uma transação ativa. O erro "transaction is required to perform this operation" indica que uma transação é necessária para executar a operação, ou seja, o EntityManager precisa estar associado a uma transação para realizar as operações de persistência.

Uma possível solução para esse problema é garantir que você esteja executando a operação dentro de uma transação. Você pode fazer isso utilizando a anotação @Transactional no método que recebe a mensagem e realiza a persistência no banco de dados. Dessa forma, o EntityManager será corretamente associado à transação.

Aqui está um exemplo de como você pode utilizar a anotação @Transactional:

@Transactional
public void receberMensagem(Mensagem mensagem) {
    // Realize a persistência da mensagem no banco de dados utilizando o EntityManager
}

Espero ter ajudado e bons estudos!