1>RocketMQ中nameServer和broker有什么作用
1)nameServer-->内部注册中心 管理broker的ip和端口,客户端从nameServer拉取broker地址,然后进行拼接
2)broker-->负责存储消息和转发消息,包括消费者组,消费进度偏移,主题和队列消息等
2>RocketMQ中的Topic/Queue/Tag有什么联系和作用
1)Topic-->主题,也可理解成目的地,实际发送消息的地方 按照不同的业务 Topic不一样,每个主题包含若干条消息,每条消息只有一个主题
2)Queue-->消息队列,对于每个Topic都可以设置一定数量的消息队列用来进行数据读取
3)Tag-->为消息设置的标志,用来区分同一主题不同类型的消息,保证代码的清晰度和连贯性,实现更好的扩展性
3>RocketMQ中同步消息/异步消息/一次性消息
1)同步消息指发出数据后会在收到接收方发回响应之后才发下⼀个数据包。⼀般用于重要通知消息,例如重要通知邮件、营销短信。
2)异步消息指发送的代码 只要消息到达消息中间件 发送的请求就返回了 不需要等待消息存储到本地 继续执行后续的代码,例如用户视频上传后通知启动转码服务。
3)一次性消息是指只管发消息 不关心消息是否存到消息中间件 使用场景 对性能要求比较高 但是不关注可靠性的问题 比如日志收集。
4>RocketMQ如何实现顺序消息
1)生产者这边改变轮询的策略,把需要顺序消费的消息根据index++取模的方式放到同一个队列之中
2)消费者这边不能使用多线程消费消息,一个队列应该对应一个线程
3)只能保证局部有序,不能保证全局有序
5>RocketMQ如何解决消息积压问题
(参照RocketMQ常见面试题_wh柒八九的博客-CSDN博客_rocketmq面试题)
1)提高消费并行读
同一个Consumer Group下,通过增加Consumer实例的数量来提高并行度,超过订阅队列数的Consumer实例无效
2)批量方式消费
通过设置Consumer的consumerMessageBathMaxSize这个参数,默认是1,一次只消费一条消息,例如设置N,那么每次消费的消息条数小于等于N
3)丢弃非重要消息
当消息发生堆积时,如果消费速度追不上生产速度,可以选择丢弃一些不重要的消息
4)优化消息消费的过程



