Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

235
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!