eventBus maybe not a good idea because eventBus is not ordered, we can not control which one run first.
2018-05-08 16:33 GMT+08:00 Willem Jiang <willem.ji...@gmail.com>: > How about register a Vertx thread clean up task in the event bus? > > Then we just need to trigger the Event after close. > > And the user can do some extension it by adding event handler which listens > to the close event. > > > Willem Jiang > > Blog: http://willemjiang.blogspot.com (English) > http://jnn.iteye.com (Chinese) > Twitter: willemjiang > Weibo: 姜宁willem > > On Tue, May 8, 2018 at 4:27 PM, 郑扬勇 <yangyong.zh...@qq.com> wrote: > > > Yes, mechanism based on spring had existed, and I had use these code to > > make Gracefully Shutdown work : > > > > ... start up event code > > } else if (event instanceof ContextClosedEvent) { > > LOGGER.warn("cse is closing now..."); > > triggerEvent(EventType.BEFORE_CLOSE); > > > > //1.Unregister microservice instance from Service Center > > //it contains eventBus.post(new ShutdownEvent());I think we may > move > > out from it > > RegistryUtils.destroy(); > > > > //2.Stop all network transport threads > > for (String vertx : VertxUtils.getVertxMap().keySet().toArray(new > > String[0])) { > > VertxUtils.getVertxMap().get(vertx).close(); > > VertxUtils.getVertxMap().remove(vertx); > > } > > > > //3.Close ApplicationContext > > if (applicationContext instanceof AbstractApplicationContext) { > > ((AbstractApplicationContext) applicationContext).close(); > > } > > > > //4.Raise an ShutdownEvent in EventBus in order to notify > > components do clean works > > //eventBus.post(new ShutdownEvent()); > > > > triggerEvent(EventType.AFTER_CLOSE); > > isInit = false; > > } > > > > > > And I think we can use EventBus listening ShutdownEvent rather than only > > use SPI, may even simpler ? > > > > Best Regards! > > YangYongZheng > > > > ------------------ 原始邮件 ------------------ > > 发件人: "wjm wjm"<zzz...@gmail.com>; > > 发送时间: 2018年5月8日(星期二) 下午3:50 > > 收件人: "dev"<dev@servicecomb.apache.org>; > > > > 主题: Re: [Discussion]What Java Chassis need to do for support Gracefully > > Shutdown > > > > > > > > we already have this mechanism, but listener depend on spring bean. > > so we can improve it: > > 1.allow listener registered by SPI > > 2.modules should register listener to do their clean up works > > 3.clean up maybe must ordered, so listener add getOrder method. > > > > 2018-05-08 14:56 GMT+08:00 Willem Jiang <willem.ji...@gmail.com>: > > > > > My suggestion is register a shutdown callback (to do 1,2,4) in the > > > ApplicationContext. > > > In this way we can do some clean up work with or without Spring. > > > > > > > > > Willem Jiang > > > > > > Blog: http://willemjiang.blogspot.com (English) > > > http://jnn.iteye.com (Chinese) > > > Twitter: willemjiang > > > Weibo: 姜宁willem > > > > > > On Tue, May 8, 2018 at 2:53 PM, 郑扬勇 <yangyong.zh...@qq.com> wrote: > > > > > > > Hi All: > > > > In order to let Java Chassis support Gracefully Shutdown, I think > > need > > > > to do these works : > > > > 1.Unregister microservice instance from Service Center(clean > service > > > > registry). > > > > 2.Stop all network transport threads (vertx eventloop-threads)(to > > > > prevent blocking exit). > > > > 3.Close ClassPathXmlApplicationContext created in BeanUtils.init() > > and > > > > release all resources and locks. > > > > 4.Raise an ShutdownEvent in EventBus. > > > > > > > > Also if user directly call `System.exit(0)` , all these works will > > > done > > > > and jvm can terminate with `Process finished with exit code 0`. > > > > > > > > What's missing or any suggestions are welcome ! > > > > > > > > Best Regards! > > > > YangYongZheng > > > > > >