Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

238
Visualizações
eventos de nivel de aplicación en ktor no invocados

Actualmente estoy experimentando con eventos de aplicaciones en ktor usando Netty. Sin embargo, el único enlace al que se llama es "ApplicationStarted". ¿Qué estoy haciendo mal aquí?

Establecí puntos de interrupción en todas las funciones, las suscripciones se realizan pero no se invocan todos los detectores de eventos. También traté de encontrar alguna explicación en los documentos de ktor, pero no tuve éxito.

 import io.ktor.application.* fun Application.events(){ environment.monitor.subscribe(ApplicationStarting, ::onStarting) environment.monitor.subscribe(ApplicationStarted, ::onStarted) environment.monitor.subscribe(ApplicationStopping, ::onStopping) environment.monitor.subscribe(ApplicationStopped, ::onStopped) environment.monitor.subscribe(ApplicationStopPreparing, ::onPrepareStop) } private fun onStarting(app: Application){ app.log.info("Application starting") } private fun onStarted(app: Application){ app.log.info("Application started") } private fun onStopping(app: Application){ app.log.info("Application stopping") } private fun onStopped(app: Application){ app.log.info("Application stopped") } private fun onPrepareStop(env: ApplicationEnvironment){ env.log.info("Preparing App Stop") }

Aparece "Aplicación iniciada" en los mensajes de registro, pero ningún otro resultado.

¿Qué tan mal lo estoy haciendo, o es esto un error?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Ok, estuve investigando esto y descubrí que la cantidad de eventos de nivel de aplicación invocados depende del servidor que esté utilizando. Los siguientes servidores incorporados admiten los siguientes eventos:

+--------+----------+---------+---------------+--- -------+---------+
| Motor | Comenzando | Iniciado | Dejar de preparar | Parando | Detenido |
+--------+----------+---------+---------------+--- -------+---------+
| Neto | NO | SÍ | NO | NO | NO |
| director de información | NO | SÍ | SÍ | SÍ | SÍ |
| gato | NO | SÍ | NO | NO | NO |
| Embarcadero | NO | SÍ | NO | NO | NO |
+--------+----------+---------+---------------+--- -------+---------+

Probado en Ktor versión 1.1.2

Por lo tanto, actualmente parece que si desea responder a eventos de detención de aplicaciones, debe usar CIO como servidor.

EDITAR:

CIO no es compatible con HTTPS a partir de ahora, por lo que, si es necesario, debe ceñirse a uno de los otros tres. Sin embargo, puede usar el enlace de apagado del tiempo de ejecución de JVM para generar un evento detenido usted mismo. Tenga en cuenta que los controladores se invocan en un subproceso diferente.

 private fun onStarted(app: Application){ Runtime.getRuntime()?.addShutdownHook( Thread { app.environment.monitor.raise(ApplicationStopped, app) }) app.log.info("Application started") }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda