push类型消息中间件-消息订阅者(一)
1.订阅者的声明方式
我们以spring组件化的方式,声明一个消息订阅者,对于消息订阅者关心的主要有:
topic: 一级消息类型(又名消息主题)。如TRADE
消息类型:二级消息类型,区别同一Topic主题下的不同类型的消息; 如:TRADE(交易主题)下有
2300-trade-created-done(交易创建)
group信息:又称组名,根据groupId来识别客户端机器, 配置为同一groupId视为同一集群的机器 .因此,
各个业务之间,发送方和订阅方之间的GroupId不能重复
示例如下:
<bean id="langyanCcSubscriber" class="com.taobao.hsf.notify.client.NotifyManagerBean" init-method="init">
<property name="subscribeMessages">
<map>
<entry key="langyan-cc">
<map>
<entry key="NM-fission-cc-failed">
<bean class="com.taobao.hsf.notify.client.SubscriptMsgDetailInfo" />
</entry>
</map>
</entry>
</map>
</property>
<property name="groupId" value="S-LY-fission-cc" />
<property name="messageListener" ref="langyanCcMessageListener" />
</bean>
2.订阅者的实例化流程
基本流程图如下:

该流程主要包括以下以下几个核心类:
- NotifyMessageBean:这是消息订阅者spring的组装类
- MessageReceiver:这是消息订阅处理类,当只有一个topic时,一个消息类型时,可以主需要声明一个receiver
- MessageWorker:这是某一类型消息的处理组装类:消息的转换类和消息的处理类
- MessageProcessor:消息的处理类
3.订阅者的连接管理
创建连接的流程如下:

有以下几个核心的类:
- DefaultNotifyManager:是订阅者实例化的核心类,同时初始化网络连接的客户端
- DefaultRemotingService:消息的网络通讯服务,根据topic拉取服务端地址,建立连接
- NewUrlManager:根据url创建连接
push类型消息中间件-消息订阅者(一)的更多相关文章
- push类型消息中间件-消息发布者(二)
1.消息发布者声明 我们以spring的方式来声明一个消息发布者: <bean id="operateLogsMessageManager" class="com. ...
- push类型消息中间件-消息服务端(三)
1.连接管理 网络架构原来是使用是自己开发的网络框架Gecko,Gecko默认为每个网络连接分配64KB的内存,支持1000个网络连接,就需要大概64MB的内存.后来采用Netty重构了网络服务层. ...
- pull类型消息中间件-消息发布者(一)
消息集群架构 对于发送方来说的关键几要素 topic 消息的主题,由用户定义.类似于知乎的话题,Producer发送消息的时候需要指定发送到某一个topic下面,Consumer从某一个topic下面 ...
- pull类型消息中间件-消息消费者(二)
消费者的实例化 关于consumer的默认实现,metaq有两种: DefaultMQPullConsumer:由业务方主动拉取消息 DefaultMQPushConsumer:通过业务方注册回调方法 ...
- pull类型消息中间件-消息服务端(三)
部署架构 消息存储 存储结构 MetaQ的存储结构是一种物理队列+逻辑队列的结构.如下图所示: Producer生产消息,根据消息的topic选择topic对应某一个分区,然后发送到这个分区对应的Br ...
- 详谈:Redis事务和消息订阅
一.Redis事务 1.概念 可以一次执行多个命令,本质是一组命令的集合.一个事务中的 所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞. 事务能做的事: 一个队列中,一次性.顺序 ...
- 基于Redis的消息订阅/发布
在工业生产设计中,我们往往需要实现一个基于消息订阅的模式,用来对非定时的的消息进行监听订阅. 这种设计模式在 总线设计模式中得到体现.微软以前的WCF中实现了服务总线 ServiceBus的设计模式. ...
- Apache Pulsar——企业级消息订阅系统介绍
Apache Pulsar是一款由雅虎开发的类似于Kafka的企业级消息订阅系统,在2016将其开源,由Apach基金会孵化,现在已经成长为Apache基金会的顶级项目.Pulsar在雅虎内部已经运行 ...
- python+mitmproxy抓包过滤+redis消息订阅+websocket实时消息发送,日志实时输出到web界面
本实例实现需求 在游戏SDK测试中,经常需要测试游戏中SDK的埋点日志是否接入正确.本实例通过抓包(客户端http/https 请求)来判定埋点日志是是否接入正确. 实现细节:使用django项目,后 ...
随机推荐
- .Net程序员学用Oracle系列(6):表、字段、注释、约束、索引
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.表 1.1.创建表 1.2.修改表 & 删除表 2.字段 2.1.添加字段 2.2.修改字段 & 删除字段 ...
- Kettle的应用——对mysql数据进行表输入与导出
Kettle的应用——对mysql数据进行表输入与导出 1. 下载好kettle解压包 网址:http://sourceforge.net/projects/pentaho/files/Data%20 ...
- USACO 4.1 Fence Loops(Floyd求最小环)
Fence Loops The fences that surround Farmer Brown's collection of pastures have gotten out of contro ...
- js导出execl兼容ie Chrome Firefox各种主流浏览器(js export execl)
第一种导出table布局的表格 <html> <head> <meta charset="utf-8"> <script type=&qu ...
- Redis客户端API操作 Jedis详解
redis是一个著名的key-value存储系统,也是nosql中的最常见的一种.其实,个人认为,redis最强大的地方不在于其存储,而在于其强大的缓存作用. 我们可以把它想象成一个巨大的(多借点集群 ...
- U31网管配置
1.新建网元和子架配置: 在拓扑图空白处新建对象-创建承载传输网元-选择设备-填写网元名称(A).网元类型.IP(查询出SNP的),网关IP会自动在此基础上加2.如果数据库为空先选离线- 机架子架配置 ...
- javascript 事件委托 和jQuery事件绑定on、off 和one
一. 事件委托什么是事件委托?用现实中的理解就是:有100 个学生同时在某天中午收到快递,但这100 个学生不可能同时站在学校门口等,那么都会委托门卫去收取,然后再逐个交给学生.而在jQuery 中, ...
- 在python上获得随机字符
"""今天写一个程序,在想既然可以获得随机数,那我可不可以获得任意字符呢,于是在stackoverflow.com 上找到了方法,几乎都是用导入random,然后再用其它 ...
- ubuntu 安装wxpython2.8
echo "deb http://archive.ubuntu.com/ubuntu wily main universe" | sudo tee /etc/apt/sources ...
- Ubuntu下Git的使用之创建版本库
创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以 ...