当前位置: 首页 > 后端技术 > Java

为RPC而生的t-io企业集群版的msg服务器tio-msg-demo你应该感兴趣

时间:2023-04-02 00:02:41 Java

为RPC而生的t-io企业集群版的msgservertio-msg-demo,你应该会感兴趣Requestaservice来实现某项业务,但并不需要详细了解底层网络技术的协议。t-io将程序中对外通信的各个协议模块打包处理成一个盒子。上层应用只需要连接盒子的接口对外通信即可,不需要关心盒子里面的内容。对外实现远程调用,RPC服务首先要和t-io通信,然后提供远程服务。为什么要使用RPC?如果一个系统(如网站、大型应用等)内部子系统很多,接口也很多,使用RPC的好处是显而易见的。RPC中使用的长链接不必像某些协议每次建立连接都需要进行3次握手,例如HTTP协议,可以减少网络开销;其次,RPC一般都有注册中心,还有丰富的监控管理模块;应用端需要发布、绑定离线接口、动态扩展等,可以对调用方进行非感知化、规范化的操作。而且RPC的安全性也很好。由此可见,如果在RPC下有一个非常高效的网络编程框架,使用起来会非常方便。由于t-io内置了socket和NIO功能,在与RPC的对接上有着天然的优势。当然也可以使用netty,但是netty的使用起来要比t-io复杂的多。基于t-io开发的最成功的即时通讯软件探聊,已经完全实现了RPC的功能。详情请参考:https://www.tiocloud.com/1/blog/1385967412607852544?type=screen-categorymsgServer简介t-io的企业集群版已经实现了msgserver。既然有了集群服务器,那么做rpc和msg就非常容易了!对于有RPC业务需求的老手来说又是一大福音。自主研发的IM聊天工具——谈聊,经验证完美。废话不多说,请看具体实现代码。示范代码DemoMessage.javapackageorg.tio.msg.demo;importorg.tio.msg.common.bs.msg.Message;publicclassDemoMessageextendsMessage{privatestaticfinallongserialVersionUID=-985195945448439158L;privateStringname="你好消息";publicStringgetName(){返回名称;}publicvoidsetName(Stringname){this.name=name;}}DemoMessageListener.javapackageorg.tio.msg.demo;导入org.slf4j.Logger;导入org.slf4j.LoggerFactory;导入org.tio.msg.common.bs.msg.MessageListener;导入org.tio.utils.json.Json;公共类DemoMessageListener实现MessageListener{privatestaticLoggerlog=LoggerFactory.getLogger(DemoMessageListener.class);publicstaticfinalDemoMessageListenerme=newDemoMessageListener();@OverridepublicvoidonMessage(StringfromCid,DemoMessagemessage){log.warn("收到TioMessage,fromCid[{}],Message:\r\n{}",fromCid,Json.toFormatedJson(message));}}启动类TioMsgDemoStarter.javapackageorg.tio.msg.demo;importjava.sql.SQLException;导入org.slf4j.Logger;导入org.slf4j.LoggerFactory;导入org.tio.core.Node;导入org.tio.msg.client.MsgClientStarter;导入org.tio.msg.client.MsgApi;导入org.tio。msg.common.utils.JsonInit;importorg.tio.msg.common.utils.PropInit;importorg.tio.utils.jfinal.P;/***@authortanyaowu*/publicclassTioMsgDemoStarter{privatestaticLoggerlog=LoggerFactory.getLogger(TioMsgDemoStarter.class);publicstaticMsgClientStartercluClientStarter=null;/***基础的初始化,一般用于元小试*@throwsSQLException*/publicstaticvoidinitBase()throwsSQLException{PropInit.init(newString[]{"app.properties"});JsonInit.init();}/***@paramargs*@authortanyaowu*/publicstaticvoidmain(String[]args){try{in它的基础();//启动tio集群客户端NodecluServerNode=newNode(P.get("tio.clu.server.ip"),P.getInt("tio.clu.server.port"));cluClientStarter=newMsgClientStarter(false,null,cluServerNode,null);cluClientStarter.start();Thread.sleep(100L);//休眠一段时间让每次连接的握手完成。在实际项目中,一般不需要这样做//addlistenerMsgApi.addListener(cluClientStarter.getClientTioConfig(),DemoMessage.class,DemoMessageListener.me);for(inti=0;i<1000;i++){//发布演示消息DemoMessagedemoMessage=newDemoMessage();demoMessage.setName("你好信息"+i);MsgApi.publish(cluClientStarter.getClientTioConfig(),demoMessage,true);}}catch(Throwablee){log.error("",e);系统.exit(1);}}}运行04-2422:27:01信息o.t.c.client.PacketDispatcher[102]服务器:127.0.0.1:1982,客户端:0:0:0:0:0:0:0:0:13378收到消息:MessageNtf04-2422:27:01WARNo.t.m.demo.DemoMessageListener[20]收到Tio消息,来自Cid[1385963494888697856],消息:{“名称”:"你好tio消息"}

最新推荐
猜你喜欢