1.订阅者的声明方式

我们以spring组件化的方式,声明一个消息订阅者,对于消息订阅者关心的主要有:

topic: 一级消息类型(又名消息主题)。如TRADE

消息类型:二级消息类型,区别同一Topic主题下的不同类型的消息; 如:TRADE(交易主题)下有

2300-trade-created-done(交易创建)

group信息:又称组名,根据groupId来识别客户端机器, 配置为同一groupId视为同一集群的机器 .因此,

各个业务之间,发送方和订阅方之间的GroupId不能重复

示例如下:

  <bean >
      <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.订阅者的实例化流程

基本流程图如下:
push类型消息中间件-消息订阅者(一)

该流程主要包括以下以下几个核心类:

  • NotifyMessageBean:这是消息订阅者spring的组装类
  • MessageReceiver:这是消息订阅处理类,当只有一个topic时,一个消息类型时,可以主需要声明一个receiver
  • MessageWorker:这是某一类型消息的处理组装类:消息的转换类和消息的处理类
  • MessageProcessor:消息的处理类

3.订阅者的连接管理

创建连接的流程如下:
push类型消息中间件-消息订阅者(一)
有以下几个核心的类:

  • DefaultNotifyManager:是订阅者实例化的核心类,同时初始化网络连接的客户端
  • DefaultRemotingService:消息的网络通讯服务,根据topic拉取服务端地址,建立连接
  • NewUrlManager:根据url创建连接

分类:

技术点:

相关文章: