8
respostas

Keep alive no MDB

Professor, é possível implementar um "keep alive" no mdb? Por exemplo, se o mdb estiver em idle por um periodo maior que 5 minutos ele reconectar?

8 respostas

Antônio, bom dia. A ideia seria ele desconectar no tempo ocioso e depois de 5 minutos reconectar?

Olá Professor, boa tarde. A ideia seria se o MDB ficar ocioso por 5minutos ele iria desconectar e reconectar. Isso seria apenas para garantir que por algum motivo a ociosidade não esta sendo gerada por algum "falta de sincronismo" entre a fila e MDB

Antônio, olhando essa doc aqui https://docs.oracle.com/cd/E19501-01/819-3658/ablng/index.html

Eu achei isso: In the Pool Idle Timeout field, enter the time, in seconds, that a bean in the pool can remain idle before it is removed from the pool.

Mas acho que não é bem isso que vc quer saber né?

Olá Professor, não exatamente. Seria algo como o setReconnectPolicy("all"), encontrei agora a pouco, vou testar quando chega em casa.

Vou testar assim: @ActivationConfigProperty(propertyName = "ReconnectPolicy", propertyValue = "all")

Se passar uma propriedade "invalida", vai dar erro no MDB certo? Ai ja consigo validar se essa configuração é valida, rsrsrs.

Como não estou encontrando nada para validar o tempo de idle e desconectar e reconectar, vou tentar garantir que se o MDB perder a conexão ele reconecte sem a necessidade de reiniciar a aplicação.

https://docs.oracle.com/middleware/11119/wls/JMSPG/recover.htm Connection con = cf.createConnection() (weblogic.jms.extensions.WLConnection)con).setReconnectPolicy("all")

Opa, legal demais. Você pode falar aqui se deu certo?

Opa, boa noite professor. Fiz uns testes aqui e não apresentou erros, mas quando inserir a @ActivationConfigProperty com os valores ,@ActivationConfigProperty(propertyName = "Bolinha123", propertyValue = "all") tambem não deu erro, então não tenho garantias que a configuração ,@ActivationConfigProperty(propertyName = "ReconnectPolicy", propertyValue = "all")}) é valida.

Entendi, realmente teria que testar para ver se funciona. O que eu vejo hoje, é que com infraestrutura mais moderna, isso daria para ser feito com um kubernetes da vida. Talvez subir uma instância em um cluster e ver métodos para que essa verificação ocorra de tempos em tempos. Caso desconecte, o próprio cluster gerencia isso e sobe uma nova instância, sem precisar reiniciar ou alguém colocar a mão. Faz sentido? rs

Hum, faz sentido sim. Obrigado pela dica, vou fazer esse teste e se der boa eu comento aqui