rocketmq使用场景一般会有哪些?rocketmq使用场景示例

TheDisguiser 2020-06-13 09:22:41 java常见问答 8706

之前我们讲过rocketmq,这是一个消息队列,这次我们看看它的使用场景一般有哪些吧。

一、应用解耦(异步)

系统之间在进行数据交互的时候,我们会需要在时效性和稳定性之间进行选择。如果为基于线程的异步处理,那么用户体验就能解决,但有个问题是,在极端情况下系统有可能会出现异常,会极大的影响系统的稳定性,但同步调用大多时候又无法保证性能达到理想地步,这时我们就可以使用MQ来进行处理。如:上游系统把数据投递到MQ,下游系统取MQ中数据进行消费,其中,投递和消费可以使用同步的方式处理,因为MQ接收数据的性能是非常高的,不会影响上游系统的性能,同时MQ也能够保证下游系统的及时率。

二、通知

MQ中,下游系统会一直监听MQ数据,如若MQ有数据,下游系统就会按照”先进先出”这样的规则,一条条进行消费,然上游系统就只需把数据存入MQ里,酱就既降低了不同系统之间的耦合度,同时也确保了消息通知的及时性,且也不影响上游系统的性能。

三、限流

我们知道MQ有一个非常重要的特性,MQ 中数据是只有一条数据在使用中。 那在很多存在并发,又对数据一致性要求高,且对性能要求也高的场景中MQ就能发挥大作用了。它不管多少流量进来,MQ都会让你遵守规则,排除处理,不会因为任何原因,导致并发。

四、数据分发

在MQ中,MQ的中间件一般都能够支持一对多或广播的模式,且它们都可以根据规则选择分发的对象。因此在上游的一份数据,和众多下游系统中,就可以根据规则选择是否接收这些数据了,这样扩展性会非常强。

五、消息中间件示例

例1:电商系统

消息队列会采用高可用,可持久化的消息中间件。如:Active MQ,Rabbit MQ,Rocket Mq。

rocketmq使用场景

(1)应用将主干逻辑处理完成后,写入消息队列。消息发送是否成功可以开启消息的确认模式。(消息队列返回消息接收成功状态后,应用再返回,这样保障消息的完整性)

(2)扩展流程(发短信,配送处理)订阅队列消息。采用推或拉的方式获取消息并处理。

(3)消息将应用解耦的同时,带来了数据一致性问题,可以采用最终一致性方式解决。比如主数据写入数据库,扩展应用根据消息队列,并结合数据库方式实现基于消息队列的后续处理。

例2:日志收集系统

分为Zookeeper注册中心,日志收集客户端,Kafka集群和Storm集群(OtherApp)四部分组成。

rocketmq使用场景

Zookeeper注册中心,提出负载均衡和地址查找服务

日志收集客户端,用于采集应用系统的日志,并将数据推送到kafka队列

Kafka集群:接收,路由,存储,转发等消息处理

Storm集群:与OtherApp处于同一级别,采用拉的方式消费队列中的数据

注明:以上文章中的上游和下游,在MQ中一般会叫做生产者(producer)与消费者(consumer)。

以上就是关于rocketmq使用场景的全部内容了,如果对你有所帮助的话并且你还需要了解更多有关Java架构师知识的话,就请多多关注我们网站吧。

推荐阅读:

rocketmq面试题及答案,java面试常见问题详解

rocketmq事务消息原理有哪些?rocketmq是什么?

消息队列面试题有哪些?java消息队列面试题及其答案整理