zoukankan      html  css  js  c++  java
  • 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创建连接
  • 相关阅读:
    Vue基础进阶 之 过渡效果
    Vue基础进阶 之 自定义指令
    Vue基础进阶 之 实例方法--生命周期
    Vue基础进阶 之 实例方法
    Vue基础进阶 之 常用的实例属性
    Vue基础进阶 之 计算属性的使用
    Vue基础进阶 之 Vue生命周期与钩子函数
    JavaScript 条件判断算法综合实战
    (KMP)Simpsons’ Hidden Talents -- hdu -- 2594
    (并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )
  • 原文地址:https://www.cnblogs.com/zhulongchao/p/5745937.html
Copyright © 2011-2022 走看看