SmallMQ发布
最近一直学习,主要处理java的分布式,MQ,RPC,通信,数据库,缓存等方向。
一般现在的MQ都是企业级的,庞大,功能齐全。最主要是代码量大,对于我们这些小程序员而言,太大,修改困难,修复更加困难,学习资料现在多了还要好点。因此自己写了个小MQ,取名也叫SmallMQ.
简单言之,三部分。topicServer,负责注册,注册中心。broker,也就是MQ中心另外就是客户端,负责数据订阅发布。
如图:
每部分简单实现:
(一)topicServer
启动之后监听信息,接收MQ注册信息及上报主题信息。以及客户端获取MQ.
(二)MQ
1.MQ.负责数据传输及主题生产。主动定时上报自己的发布订阅地址。
2.定时上报自己的主题信息
3.数据接收及传递,接收主题订阅
4.分发数据,将数据传递给订阅主题的客户端,同时接收客户端的请求,对POLL类型的订阅组,接收订阅者的请求,
将数据分发。
(三)客户端
监测broker(MQ),定时获取主题信息,将发布的主题数据传递给对应的MQ.
查找主题,向MQ订阅数据。
客户端的每个订阅者都要归到订阅组中,订阅组决定2个参数,1是PUSH还是POLL,2是全部复制还是轮训。
PUSH类型的订阅者,由MQ主动分发数据。POLL类型数据,需要订阅端主动发送数据请求,然后返回订阅主题的数据。
这就要客户端是否能够容纳推送数据,不能容纳就自己获取。
复制类型,决定了数据会向每个订阅者发送数据。会缓存数据。不是复制类型,则选择其中一个订阅者,将数据发送之后抛弃。
也就是类似负载均衡的意思。如果是POLL类型,则一个数据被取出,另外的POLL则取出另外的。
以Netty为通信基础。在研究了ZMQ订阅发布扩展之后,自己重新订阅打造了一款软件模拟。
当前基本功能已经测试,可以供大家学习参考,代码量不大,满足我们小程序员的使用。逻辑都是以最原始的方式磊出。
最后还有一个功能是HTTP服务,以netty为基础,在topicServer,实现最简单的,能够查询主题信息,但是我只复制了一个服务代码
没有具体去实现功能。
最后想了想,我以前写了一个DataStrom,差不多。
代码发布在https://github.com/jinyuttt
SmallMQ发布的更多相关文章
- SmallMQ实现发布
最近一直学习,主要处理java的分布式,MQ,RPC,通信,数据库,缓存等方向. 一般现在的MQ都是企业级的,庞大,功能齐全.最主要是代码量大,对于我们这些小程序员而言,太大,修改困难,修复更加困难, ...
- MIP 官方发布 v1稳定版本
近期,MIP官方发布了MIP系列文件的全新v1版本,我们建议大家尽快完成升级. 一. 我是开发者,如何升级版本? 对于MIP页面开发者来说,只需替换线上引用的MIP文件为v1版本,就可以完成升级.所有 ...
- Taurus.MVC 2.0 开源发布:WebAPI开发教程
背景: 有用户反映,Tausus.MVC 能写WebAPI么? 能! 教程呢? 嗯,木有! 好吧,刚好2.0出来,就带上WEBAPI教程了! 开源地址: https://github.com/cyq1 ...
- DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享
DBImport V3.7介绍: 1:先上图,再介绍亮点功能: 主要的升级功能为: 1:增加(Truncate Table)清表再插入功能: 清掉再插,可以保证两个库的数据一致,自己很喜欢这个功能. ...
- 发布:.NET开发人员必备的可视化调试工具(你值的拥有)
1:如何使用 1:点击下载:.NET可视化调试工具 (更新于2016-12-29 19:11:00) (终于彻底兼容了部分VS环境下无法使用的问题) 2:解压RAR后执行:CYQ.VisualierS ...
- 微软发布正式版SQL Server 2016
微软于今天在SQL 官方博客上宣布 SQL Server 数据库软件的正式发布版本(GA),历时一年多,微软为该软件发布了多个公共预览版和候选版本,而今天最终版本终于上线了.在博客中,微软数据集团的企 ...
- Castle Core 4.0.0 alpha001发布
时隔一年多以后Castle 项目又开始活跃,最近刚发布了Castle Core 4.0.0 的alpha版本, https://github.com/castleproject/Core/releas ...
- 在离线环境中发布.NET Core至Windows Server 2008
在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...
- ASP.NET Core应用针对静态文件请求的处理[1]: 以Web的形式发布静态文件
虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件 ...
随机推荐
- union、except和intersect查询
1. union联合查询 (合并) select r.room_id from room r union select rp.num from room_type rp 要求表1和表2的查询结果结构 ...
- 2.C#编程语言
C#(sharp):是一种编程语言,可以开发基于.net平台的应用. java即是一种平台,也是一名语言. 在.net平台当中,C#是主流语言.C#语言开发的应用不能脱离.net环境而独立运行 ...
- scss-比较运算符
与JavaScript类似,scss中也有比较运算符,下面就分别做一下介绍. 一.==相等和!=不相等运算符: 此运算符用来判断两个操作数是否相等. 特别说明: 上面两个运算符,支持类似于JavaSc ...
- input placeholder 在chrome 浏览器自动填充时,背景色覆盖原有背景图片问题。
user-block-name, .user-block-pwd { margin-bottom: 10%; text-align: center; position: relative; } .us ...
- 【基础笔记】tomcat安装后运行出现出现问题(the JRE_HOME environment variable is not defined correctly This environment variabl)
之前装好tomcat后正常运行 后来重装系统后,又一次配置环境时却报错. 在网上查找了两篇文章. https://blog.csdn.net/haleyliu123/article/details/ ...
- mac上如何卸载node
homebrew安装的 直接一条命令 brew uninstall node 官网下载pkg安装包的 一条命令 sudo rm -rf /usr/local/{bin/{node,npm},lib/n ...
- less自动编译 VScode 开发工具配置
1.首先在vscode商店下载EasyLess插件,安装 2.在VS Code项目中,有一个.vscode的文件夹,找里面的settings.json文件(或者在文件-首选项-设置-搜索setting ...
- Sharepoint学习笔记--如何定位网站集所在的w3wp进程
我们在调试WebPart或者EventHandler之类的自定义组件时会遇到如何定位部署的网站集所对应的w3wp.exe进程的问题,方法如下 : 方法1. 直接开始运行,输入cmd,再输入iisap ...
- 安装adobe,路径My Pictures或卷无效。请重新输入。
问题:安装adobe reader时,路径My Pictures或卷无效.请重新输入.我的光驱是D盘.因为是在虚拟机下安装的xp系统. 解决办法: GHOST WINXP2 My Pictures一般 ...
- VBA注意事项
以下是项目过程中遇到的坑,可能有些说明的部分不一定严谨,仅供参考 1.最好保存成 [*.xlsm]文件 2.注意 VBA 的参数类型,使用的参数如果未声明直接使用的话会出现类型不匹配的错误 3.代码写 ...