最近终于有点空了,将 Magician 发布了一个新版本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Joker123456789
V2EX    Java

最近终于有点空了,将 Magician 发布了一个新版本

  •  
  •   Joker123456789 2022-07-01 11:03:27 +08:00 1820 次点击
    这是一个创建于 1206 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Magician 大家可能比较陌生,在介绍本次更新前 先简单介绍一下吧:

    Magician 是一套 web 开发的工具集,开发者可以自由选择自己想用的工具,可以选择只用一个小型的 http 服务包开发一个微型服务,也可以搭配 MVC 来实现一个常规的 web 服务,也可以只选择 JDBC 框架 对数据库进操作,也可以全部一起用,实现一个完整的 web 服务,同时我们也会提供各种小型组件库,来方便开发者。

    目前已经发布了三个包,分别是 Magician ,Magician-Web ,Magician-JDBC ,他们分别对应,小型 http 服务器,MVC 框架,数据库操作框架。

    本次更新的部分在于第一个包 - Magician (Magician 既是这一套项目的名称,也是核心组件的名称):

    Magician 是一个基于 Netty 的小型 HTTP 服务包,可以很方便的启动一个 HTTP 服务,支持 WebSocket ,采用注解来配置 Handler 。

    如果你想用 netty 开发一个 http 服务,但发现它很麻烦,那么 Magician 可能会帮到你。

    本次更新的点

    • 支持自定义配置
    • 支持监听多端口
    • 同一个项目中,可以多地使用

    自定义配置

    以前,我们启动一个 Magician 服务,只能用默认的配置,现在有这么几个配置项支持自定义了

    MagicianConfig magicianCOnfig= new MagicianConfig(); magicianConfig.setNumberOfPorts(3); // 允许同时监听的端口数量,默认 1 个 magicianConfig.setBossThreads(1); // netty 的 boss 线程数量 默认 1 个 magicianConfig.setWorkThreads(3); // netty 的 work 线程数量 默认 3 个 magicianConfig.setNettyLogLevel(LogLevel.DEBUG); // netty 的日志打印级别 magicianConfig.setMaxInitialLineLength(4096); // http 解码器的构造参数 1 ,默认 4096 跟 netty 一样 magicianConfig.setMaxHeaderSize(8192); // http 解码器的构造参数 2 ,默认 8192 跟 netty 一样 magicianConfig.setMaxChunkSize(8192); // http 解码器的构造参数 3 ,默认 8192 跟 netty 一样 

    所有配置项都有默认值,所以在使用的时候 可以只选择自己需要更改的配置项进行设置,设置好了以后需要添加到 HttpServer 实例中

    Magician.createHttp() .scan("com.test")// 扫描范围(包名) .setConfig(magicianConfig) // 添加配置 .bind(8080); 

    监听多端口

    很简单,只需要调用 bind 方法多次即可

    HttpServer httpServer = Magician.createHttp() .scan("com.test")// 扫描范围(包名) .setConfig(magicianConfig); // 添加配置 httpServer.bind(8080); httpServer.bind(8081); httpServer.bind(8082); 

    同项目中,多地使用

    有时候可能会遇到这种需求,同一个项目中,有些资源是对内的,有些资源是对外的,我们想把这两部分资源隔离开来,这个时候可能就需要启动两个服务了。 在本次升级的时候,为了实现监听多端口,bind 已经变成异步的方法了,在调用 bind 以后,不会阻塞,而是可以继续往下执行,所以这个需求得到了完美的解决, 有两个实现方案。

    1. 监听两个端口,把对外和对内分开

    2. 直接启动两个服务,把端口,配置,线程全都分开

    第一种方法,不用多说,相信大家都知道怎么做了,咱们重点说说第二种方法,跟监听多端口差不多的思路,只不过变成了启动两个服务,比如:

    启动一个对外服务

    // 将 8080 端口做为对外的端口,并且 scan 只扫描对外的资源(接口,handler 等) HttpServer httpServer = Magician.createHttp() .scan("com.test")// 只扫描对外的资源 .setConfig(magicianConfig); // 添加配置 httpServer.bind(8080); 

    启动一个对内服务

    // 将 8081 端口做为对内的端口,并且 scan 只扫描对内的资源(接口,handler 等) HttpServer httpServer = Magician.createHttp() .scan("com.test")// 只扫描对内的资源 .setConfig(magicianConfig); // 添加配置 httpServer.bind(8081); 

    想了解更多,可以访问官网

    https://magician-io.com

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2576 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 20ms UTC 04:07 PVG 12:07 LAX 21:07 JFK 00:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86