dubbo 钩子关闭
来源:互联网 发布:js监听函数是否执行 编辑:程序博客网 时间:2024/05/22 17:42
dubbo钩子关闭,
避免业务丢失
package com.test.task;import com.alibaba.dubbo.common.Constants;import com.alibaba.dubbo.common.extension.ExtensionLoader;import com.alibaba.dubbo.common.utils.ConfigUtils;import com.alibaba.dubbo.container.Container;import com.alibaba.dubbo.container.Main;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.List;public class TaskMain { public static final String CONTAINER_KEY = "dubbo.container"; public static final String SHUTDOWN_HOOK_KEY = "dubbo.shutdown.hook"; private static final Logger logger = LogManager.getLogger(Main.class); private static final ExtensionLoader<Container> loader = ExtensionLoader.getExtensionLoader(Container.class); private static volatile boolean running = true; public static void main(String[] args) { try { if ((args == null) || (args.length == 0)) { String config = ConfigUtils.getProperty("dubbo.container", loader.getDefaultExtensionName()); args = Constants.COMMA_SPLIT_PATTERN.split(config); } final List<Container> containers = new ArrayList<Container>(); for (int i = 0; i < args.length; i++) { containers.add(loader.getExtension(args[i])); } logger.info("Use container type(" + Arrays.toString(args) + ") to run dubbo serivce."); if ("true".equals(System.getProperty("dubbo.shutdown.hook"))) { Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { for (Container container : containers) { try { container.stop(); logger.info("Dubbo " + container.getClass().getSimpleName() + " stopped!"); } catch (Throwable t) { logger.error(t.getMessage(), t); } synchronized (Main.class) { running = false; Main.class.notify(); } } } }); } for (Container container : containers) { container.start(); logger.info("Dubbo " + container.getClass().getSimpleName() + " started!"); } logger.info(new SimpleDateFormat("[yyyy-MM-dd HH:mm:ss]").format(new Date()) + " Dubbo service server started!"); } catch (RuntimeException e) { logger.error(e.getMessage(), e); e.printStackTrace(); System.exit(1); } logger.info("============dubbo is starting=============="); synchronized (Main.class) { while (running) try { Main.class.wait(); } catch (Throwable localThrowable) { } } }}
阅读全文
0 0
- dubbo 钩子关闭
- 关闭钩子
- 关闭钩子(ShutdownHook)
- java关闭钩子
- 线程关闭钩子 addShutdownHook
- java 关闭钩子
- Java关闭钩子
- tomat(16)关闭钩子
- Java关闭钩子的应用
- 全局钩子ESC 关闭程序
- 深入JVM关闭与关闭钩子
- 用钩子截去ALT+F4 用钩子关闭窗口
- 为程序加上“关闭钩子”(ShutdownHook)
- JVM里注册Spring的关闭钩子
- 初探Tomcat源码 —— 关闭钩子
- Tomcat 学习进阶历程之关闭钩子
- JAVA虚拟机关闭钩子(Shutdown Hook)
- Spring: 使用关闭钩子销毁bean
- 转载:vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- etcd 微服务注册与发现
- vue.js教程
- 常用企业 信息确认手段
- 防止修改后Xshell不能连接centos上修改默认ssh端口号的详细配置
- dubbo 钩子关闭
- 请教:使用存储过程查询数据库
- 2017-8-3 VBA
- CodeForces
- RecycleView实现单选框RadioButton,复选框CheckBox,不定项选择
- eclipse创建web工程,工程名出现红色感叹号
- 4.spring配置
- Java反射机制
- 第三天:鼠标与滑动条相关操作