ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Solon 1.6.36 发布,更现代感的应用开发框架

2022-04-10 23:36:07  阅读:184  来源: 互联网

标签:1.6 Solon 现代感 插件 job session solon public


相对于 Spring Boot 和 Spring Cloud 的项目

  • 启动快 5 ~ 10 倍
  • qps 高 2~ 3 倍
  • 运行时内存节省 1/3 ~ 1/2
  • 打包可以缩小到 1/2 ~ 1/10(比如,90Mb 的变成了 9Mb)

关于 Solon

Solon 是一个更现代感的应用开发框架,轻量、开放生态型的。支持 Web、Data、Job、Remoting、Cloud 等任何开发场景。

  • 强调,克制 + 简洁 + 开放 + 生态的原则
  • 力求,更小、更少、更快、更自由的体验

目前有近130个生态插件,含盖了日常开发的各种需求。

本次主要更新

  • 添加 SocketContext::SessionState 接口支持

@Controller
public class DemoController{
    @Socket
    @Mapping("/hello")
    public String hello(Context ctx){
        if(ctx.session("user") == null){
            ctx.sessionSet("user", "noear");
        }
        
        return ctx.session("user");
    }
}
  • 添加 Session::pathNew() 接口支持
  • 添加 SolonApp::listenBefore, SolonApp::listenAfter 接口,以提供 Listener 过滤的支持
public class DemoApp {
    public static void main(String[] args) {
        Solon.start(DemoApp.class, args, app -> {
            app.listenBefore(new ListenerEmpty() {
                @Override
                public void onOpen(Session session) {
                    //修改ws的监听路径
                    if (session.path().startsWith("/xx/")) {
                        session.pathNew(session.path().substring(4));
                    }
                }
            });
        });
    }
}
  • 添加 sa-token-solon-plugin 插件对 dao 适配[实验方案]
    • SaTokenDaoOfRedis
    • SaTokenDaoOfSession
  • 新增 mybatis-plus-extension-solon-plugin 插件
  • 插件 solon.extend.sessionstate.jwt 呼略 ServiceConfigurationError 抛出
  • 添加 CloudJobInterceptor,提供 job 的拦截机制
@Slf4j
public class CloudJobInterceptorImpl implements CloudJobInterceptor {
    @Override
    public void doIntercept(Job job, CloudJobHandler handler) throws Throwable {
        long start = System.currentTimeMillis();
        try {
            handler.handle(job.getContext());
        } catch (Throwable e) {
            //记录带标签的日志
            TagsMDC.tag0("job");
            TagsMDC.tag1(job.getName());
            log.error("{}", e);

            throw e; //别吃掉
        } finally {
            //记录一个内部处理的花费时间
            long timespan = System.currentTimeMillis() - start;
            CloudClient.metric().addMeter(Solon.cfg().appName(), "job", timespan);
        }
    }
}
  • 添加 CloudEventInterceptor,提供 event 的拦截机制
//CloudEventInterceptor 与 CloudJobInterceptor 起到类型的作用
  • 调整 Gateway 的缺省处理设定方式
  • 调整 CloudJobHandler 为 job 的强制接口,之前 Handler 即可
  • 调整 HttpUtils 增加短处理和长处理的切换支持

进一步了解 Solon

项目地址

标签:1.6,Solon,现代感,插件,job,session,solon,public
来源: https://www.cnblogs.com/noear/p/16128126.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有