Skip to content

java netty 集群游戏服务器框架 ioGame 17.1.28

Compare
Choose a tag to compare
@iohao iohao released this 01 Jan 14:45
· 486 commits to main since this release

增加版本标识
增加版本标识,并在 DebugInOut 插件中显示的打印。

┏━━━━━ Debug. [(HelloAction.java:88).world] ━━━ [cmd:1 - subCmd:7 - cmdMerge:65543] ━━━ [逻辑服 [hello 游戏逻辑服] - id:[fc3348f8-4881-49e4-b94d-8cd99ab543cf]]
┣ userId: 0
┣ 参数: helloReq : HelloReq(name=112)
┣ 响应: HelloReq(name=死亡阴影3)
┣ 时间: 0 ms (业务方法总耗时)
┗━━━━━ Debug  [HelloAction.java - ioGame:17.1.28] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

业务框架处理器
增加 ActionCommandTryHandler 并作为默认的业务框架处理器。
业务框架默认是在 bolt 线程运行,如果有异常会被 bolt 捕获到日志文件中。由于控制台没有显示的打印异常信息,开发者如果对 bolt 不熟悉,是不知道有该日志文件的。当出现异常时,将会浪费开发人员的时间来排查问题,为了避免这种情况,业务框架先做捕获,并打印到控制台中,在向上抛 ex。

bolt 日志文件相关 https://www.yuque.com/iohao/game/derl0laiu2v0k104#likQv

final class ActionCommandTryHandler extends ActionCommandHandler {
    @Override
    public boolean handler(final FlowContext flowContext) {
        /*
         * 业务框架默认是在 bolt 线程运行,如果有异常会被 bolt 捕获到日志文件中,
         * https://www.yuque.com/iohao/game/derl0laiu2v0k104#likQv
         *
         * 由于没有打印到控制台,开发者如果对 bolt 不熟悉,是不会看日志文件,或者说不知道有该日志文件。
         * 为了避免这种情况,业务框架先做捕获并打印,在向上抛 ex
         *
         */

        try {
            return super.handler(flowContext);
        } catch (Throwable e) {
            log.error(e.getMessage(), e);
            throw e;
        }
    }
}