毕设之消息系统实现Netty基本服务搭建前言前几天,随便画了草图来对netty进行一个简单的封装,从而完成我们消

其实我们整个封装的核心,其实就两个部分。

这个交换机,其实就是我们的消息的发送者。我们这里其实主要有两个模式:

之所以要使用这个交换机只不过是为了方便做管理罢了。因为在我的社区当中有个类似于聊天室的功能,而且这个聊天室有很多个。因此需要进行简单管理。再或者说有时候我们有多个不同类别的设备需要进行管理互通之类的,例如电脑给手机发送消息。但是不管怎么说,最基本的其实就是这两个,也就是:组内广播,一对一点播(组内,组外)

此外,交换机的匹配规则是可以自定义的,有时候,可能需要匹配到以A开头的组别,等等,这个后面都好说。

说到这里的话,你应该很好奇,这个玩意该怎么实现。其实很简单,首先我们对所有的用户的连接给管理起来,把对应的userid-group和channel放到一个map当中管理起来。然后,我们再建立一个分组索引即可。这个分组索引当然也是一个map来进行维护的。这里主要有两个:

我们这里面定义的处理器,其实和netty里面定义的处理器是一样的,其目的都是为了方便实现对消息的处理。刚刚的交换机实现了,这个消息要发到那里去。那么现在的处理器决定了,这个消息要怎么处理才能发送。大白话就是交换机决定了你的消息能到谁的手上,处理器决定了你的消息长啥样

那么这里有什么重要点嘛?其实就两个:

那么实现了这两个点,我们handler就基本上可以愉快玩耍了。

当然在这里我们这里先讨论的是关于这个Netty本身,先把这个主体玩意搭建起来,后面的增强就很好处理了。

其实使用netty就这几步:

我们先来看到配置:

同时在这里你应该注意到了,我们在这里还需要对消息进行一个转化,这里首先是定义了一个基本的消息类:

packagecom.huterox.messaging.core.entities;/***netty客户端返回数据格式**/publicclassDataContent{//用户idprivateStringuserid;//用户组别privateStringgroup;//此次用户请求的行为privateIntegeraction;//携带的消息(这里是一个object对象,做强制类型转换即可)privateObjectmessage;publicDataContent(Stringuserid,Stringgroup,Integeraction){this.userid=userid;this.group=group;this.action=action;}publicStringgetUserid(){returnuserid;}publicvoidsetUserid(Stringuserid){this.userid=userid;}publicStringgetGroup(){returngroup;}publicvoidsetGroup(Stringgroup){this.group=group;}publicIntegergetAction(){returnaction;}publicvoidsetAction(Integeraction){this.action=action;}@OverridepublicStringtoString(){return"DataContent{"+"userid='"+userid+'\''+",group='"+group+'\''+",action="+action+'}';}}然后的话,我们有个JsonUtils可以帮助我们把这些东西转化未我们的Java对象。

packagecom.huterox.messaging;importcom.huterox.messaging.config.NettyProperties;importio.netty.bootstrap.ServerBootstrap;importio.netty.channel.nio.NioEventLoopGroup;importjavax.annotation.Resource;/***服务器启动类*/publicclassServerBoot{@ResourceServerBootstrapserverBootstrap;@ResourceNioEventLoopGroupboosGroup;@ResourceNioEventLoopGroupworkerGroup;/***开机启动*/publicvoidstart()throwsInterruptedException{//绑定端口启动serverBootstrap.bind(NettyProperties.port).sync();}/***关闭线程池*/publicvoidclose()throwsInterruptedException{boosGroup.shutdownGracefully();workerGroup.shutdownGracefully();}}后面我们在SpringBoot当中启动的时候,指定启动start()即可。这里面怎么具体操作的话,需要在后面具体使用的时候再进行说明了,届时会再给出前端的连接代码。

THE END
1.用Python来做一个简单的学生管理系统(附源码)轻松学Python主要代码,完整代码素材、包括其它版本学生管理系统代码,也有录制好的视频讲解,第八行代码自取即可! #学生信息放在字典里面student_info =[ {'姓名':'婧琪','语文': 60,'数学': 60,'英语': 60,'总分': 180}, {'姓名':'巳月','语文': 60,'数学': 60,'英语': 60,'总分': 180}, ...https://www.cnblogs.com/hahaa/p/17016885.html
2.2019届毕业设计(论文)阶段性汇报打算做读书笔记,简单介绍一下我的思路,第一次先介绍关于控制论的一些基本概念,然后证明线性系统可控的一些引理。 赵越 哈密顿方法的分析与应用研究 介绍问题来源以及基本的MCMC方法以及HMC方法;再对其中遇到的问题进行研究;细致平衡条件讲解;再对四个问题进行数值模拟与比较;最后介绍一些相关的优化方法。 https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3366
3.感觉自己毕设太简单了,慌得不行校园区软工专业,中下985本科,自己编程水平太菜大学一直就嗯混,也没怎么做过项目,毕设选了个挺简单的选题,基本就是个后台管理系统加了个微信服务号发消息和车牌识别的功能,车牌识别还是调用的百度ai的api,别的功能都是千篇一律的增删改查,其实说实话,毕设也是认真做了的,我自己水平不高,用的技术都是边学边做的,想着...https://m.hupu.com/bbs/35301245.html
4.必过源码使用Python实现TDOA的定位算法,应用于UWB系统 智能家居管理系统设计(原理图+APP+源代码等) 学生考勤系统,C#源码,信息管理系统 Java+JSP学生考勤系统源代码,源代码齐全 电影院购票系统:用Java语言编程,实现彩色界面,可供使用者购买电影票 一个基于JAVA的读取OPC的源代码,带DLL的源代码 ...http://www.biguo100.com/
1.职业生涯人物访谈报告(精选12篇)2.您能简单介绍下您从大学到从事高校老师的经历吗? 答:我是大学毕业后分配到教师岗位上的,其实原来并没有想做教师的想法。不过从事教师工作后,就把这种职业当做了一种追求,我很热爱教师这份工作。 3.您在学生时代的有过职业目标吗?若有,是什么?您是什么时候决定做一名高校老师的? https://mip.yjbys.com/qiuzhizhinan/show-487470.html
2.酒店管理系统springboot后台,可以做毕设用资源浏览查阅173次。酒店管理系统springboot后台,可以做毕设用springboot后台管理系统简单更多下载资源、学习资料请访问CSDN文库频道.https://download.csdn.net/download/qq_41876311/81270918
3.全网开源快速开发平台,低代码平台,企业级开发平台,开源系统,私活...适用项目,可以应用在任何J2EE项目的开发中,尤其适合企业信息管理系统(MIS)、内部办公系统(OA)、企业资源计划系统(ERP)、客户关系管理系统(CRM)等,其半智能手工Merge的开发方式,可以显著提高开发效率70%以上,极大降低开发成本。 为什么选择Jeecg-Boot? 1.采用最新主流前后分离框架(Springboot+Mybatis+Antd),容易上手;...https://blog.51cto.com/lovebetterworld/2860989
4.一套简单通用的Java后台管理系统,拿来即用,非常方便今天给大家分享一套基于Spring Boot开发的脚手架,用来做毕设或者接私活都非常方便。 介绍 Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理、菜单管理、用户管理,系统设置、实时日志,实时监控,API加密,以及登录用户修改密码、配置个性菜单等。 https://cloud.tencent.com/developer/article/1981747
5.产品管理系统怎么做源代码毕业论文基于java+jsp+mysql+springmvc+mybatis实现一个SSM框架的产品管理系统, 可用于计算机专业毕业设计, 该产品管理系统分为前后台两部分, 最终实现在线上进行产品管理系统各项功能, 提升管理运营效率。该产品管理系统为一个采用mvc设计模式进行开发B/S架构项目, 对产品管理系统进行详细的需求分析后, 设计实现了如下模块, ...https://cs-work.com/topic/k5j13x
6.啊哈,到我最擅长的区域了,大学三年致力于改善生存环境,各种神器...啊哈,到我最擅长的区域了,大学三年致力于改善生存环境,各种神器纷纷用过!先贴张现在的桌面照再贴张去年的桌面照对比下面分为神器排行分为通用类,夏天专属,设备周边,工具和不推荐~---https://www.hg-daigou.com/article-31679.html
7.2023届电子信息与计算机工程系优秀毕业设计作品毕业设计最后通过系统测试,本论文所设计与实现的志愿服务管理系统,达到了预期开发目标,系统具有操作简单、成本低廉、逻辑清晰、结构稳定等特点,有效提高了志愿服务活动的信息化水平,促进了志愿服务在新发展阶段的高质量发展。3. 学生信息管理系统的设计与实现 2019级计算机科学与技术 张科银 本设计旨在设计和实现一个基于Vue框架...https://www.cdutetc.cn/c/4c068411-751b-4f12-b725-f69e34c010a3.html
8.基于Python实现一个简单的学生管理系统python这篇文章主要为大家详细介绍了如何利用python实现简单的学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下+ 目录 序言 小学妹说要毕业了,学了一学期Python等于没学,现在要做毕设做不出来,让我帮帮她,晚上去她家吃夜宵。 当时我心想,这不是分分钟的事情,还要去她家,...https://www.jb51.net/article/271406.htm
9.UI设计师(精选9篇)篇3:移动天气系统UI设计 移动应用项目的生命周期起始于产品的创意策划,成功的移动应用自创意阶段就应充分各项准备工作严格遵循企业的设计流程,这需要我们在确定项目的同时,能够冷静地分析自己的设想,理性定位自己的市场目标和产品用户,深入地了解你所面对的用户群体,针对他们的需求、习惯和欲望,做有价值的、能触动人心的...https://www.360wenmi.com/f/filel7qrkm37.html
10.考研复试的注意事项记住一定要正面回答导师的问题,问时间就答时间,问结果就答结果,千万不要问结果答原因,这样会让别人觉得你在狡辩,比如导师问你六级过了没,如果没过,就直接说“没过,但我已经认识到了英语的重要性,我会努力通过的”而千万不要说“平时做实验很忙没时间考”这样的话。 https://www.gdyjs.com/kaoyan/194775.html
11.计算机专业毕业论文选题简单一点·免费 论文]论校园网的建设和管理 ·免费 论文]校园 安全初探 ·免费 论文]完整的Windows 2000服务配置 免费下载的可以,网址 答:校园内部合理化局域网设置的研究 俺们当年就有人做这个题目 问:计算机专业毕业设计选题方向 答:计算机毕设选题可以选Java、小程序、安卓、IOS、Python等。 https://www.igaichong.com/article/0d28c0dc7b570dd9225683bb.html