rocketmq总体架构图,来源于 https://rocketmq.apache.org/docs/rmq-arc/,可参考:
2.杂记 参考:http://blog.csdn.net/quhongwei_zhanqiu/article/details/39142693
1.消息过滤,在broker中,可以按照consumer的要求做过滤,较少了网络传输。
2.rocketmq使用长轮询的方式,保证消息的实时性。 ** 基于 拉模式 拉取消息,consumer做负载均衡并通过长轮询向broker拉消息。
3.producer向队列发送消息,队列集合 称为 Topic,
4.rocketmq的网络部署特点: 1.name server 是一个无状态节点,可集群部署,节点之间无任何信息同步。 nameserver启动后,每隔10s轮询 查询清理失效的broker链接。
2.broker 有主备之分,
3.producer 可与 name server集群中的一个节点(随机选择) 建立 长连接,定期从 name server 取 topic 路由信息,并向提供 topic服务的master 建立长连接,且定时向 master 发送心跳,
producer 完全无状态,集群部署。
consumer也是与 nameserver 的一个节点 建立 长链接,定期从 nameserver 取 topoic信息,并向提供 topic服务的master 建立长链接,且定时发送心跳,
4. consumer:
拉取消费的方式:
1.push:consumer通过长轮询 拉取消息后,回调MessageListener接口实现完成消费,应用系统只要MessageListener完成业务逻辑即可。
这种模式用的最多。
2.pull:完全由业务系统去控制,定时拉取消息,指定队列消费
启动流程:
1.订阅topic,Map存储top对应的订阅对象。
2.注册消息消费的监听器,