1、rocketmq是分布式消息中间件,消息队列。支持同步、异步、单向。
(1)同步:发送请求后,会同步等待Broker服务器返回结果,支持发送失败重试,适用于比较重要的消息通知场景。
(2)异步:异步发送请求,不会阻塞当前线程,不支持失败重试,适用于对响应时间要求更高的场景。
(3)单向:单向发送原理和异步一致,但不支持回调。适用于响应时间非常短,对可靠性要求不高的场景,例如日志收集。
2、四大核心模块组成:producer、consumer、brokerServer、nameServer。前两个是客户端,后两个是服务端。
3、由于rocketmq采用ack机制保证消息的消费成功,因此consumer可能会多次收到同一条消息,需要做好幂等防护。
4、brokerServer多采用集群部署,因此需要nameServer保存brokerServer的路由信息。broker每次上下线都会和nameServer通信。producer和consumer通过nameServer获取对应的broker路由信息,再向对应的broker发起请求。
5、核心模块关系图:
6、基本概念
(1)topic主题:任何消息都只属于一个topic。
(2)tag标签:从属于topic主题,对同一主题下的消息进行进一步区分。
(3)group组:代表同一类的客户端的集合。具体可分为消费者组和生产者组。同一组通常处理同样的消息,处理逻辑也一致。
(4)message消息:具有全局唯一的messageID属性。
(5)集群消费、广播消费、混合模式消费:集群消费是同一消费者组的每个节点分摊消息,即每个节点处理的消息是不同的;广播消费是同一消费者组的每个节点都会消费,即每个节点处理的消息是一样的;混合模式消费是多个消费组,每个消费组全量消费,组内再分摊。
7、安装后的测试启动顺序:nameServer》brokerServer》consumer》producer。