RocketMQ

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/salove_y/article/details/81874574

核心概念

根据上面的模型,我们可以深入研究一些关于消息传递系统设计的话题:

  • 消费并发
  • 消费热点
  • 消费均衡
  • 消息路由
  • 多种链接方式
  • 金丝雀部署

生产者

生产者发送业务中产生的消息到brokers,RocketMQ提供了多种发送方式:同步,异步,单程。

生产者组

把相同角色的生产者组织到一起。在事务提交后,生产组中的不同实例都可以连接broker执行提交或回滚事务,以防原生产者在提交后就挂掉。

警告:考虑到生产者有很强的消息发送能力,每个生产者组只允许有一个实例用来避免不必要的初始化。

消费者

消费者从brokers拉取消息给应用使用。在用户应用方面,提供了两种类型的消费者:

拉取型


拉取型主动从broker拉取信息,一次拉取一批,用于消费应用进行消费。

推送型


推送型是另一种思路,它封装了消息的拉取和消费进程和其他的内部工作细节,只提供一个在消息到达时的回调接口。

消费者组


与先前提到的生产者组类似,相同的消费者角色组织到一起命名为消费者组

消费者组是一个不错的概念,它实现了负载平衡和容错的目标,在信息消费方面,非常简单。

注意:消费者是消费者组中的一个实例,必须订阅相同的主题topic。

主题

主题是生产者传递消息和消费者拉动消息的类别。topic与生产者与消费者之间是松耦合的。特别强调,一个主题可以有零个,一个或者多个生产者向它发送消息。相反,一个生产者可以向多个不同的主题发送消息。从消费者角度讲,一个主题可以被零个或者一个或者多个消费者组订阅,同样的一个消费者组可以订阅一个或多个主题,只要这个消费者组保持一致的订阅即可。

消息

消息是传递的信息。消息必须有一个主题,可以理解为你写信时邮寄的地址。消息也可能有一个标签选项和额外的键值对。例如,你可能发送一条消息时设置一个key标记,并通过这个key在broker中筛选这条消息,用来判断在开发阶段的问题。

消息队列


主题被划分为一个或多个子主题,这就是消息队列。

标签


标签可以理解为更细化一级的主题,为使用者提供更灵活的查找。有了标签同一业务产生的消息可以有相同的主题不同的标签,不同标签标记的可以有不同的用途。标签可以让你的代码变得清晰连贯,还可以给RocketMQ提供更好的查询支持。

代理


Broker是RocketMQ系统的重要组成部分。它接受并存储来自生产者发送的消息,并且准备去处理来自消费者的拉取请求。它也存储和消息有关的信息,包括消费者组,消费位置,还有主题/队列的信息。

名称服务

名称服务按照路由信息提供服务。生产者/消费者客户端通过主题来查找具有一致性的代理列表。

消息模式

  • 集群
  • 广播

消息顺序

DefaultMQPushConsumer被设置好,你需要设置消费是顺序的还是并发的:

  • 顺序
    有序的消息意味着消息的使用顺序与生产者为每个消息队列发送的顺序相同。如果你的使用场景要求必是须顺序的,你要确保只用一个队列存放消息。

警告:如果消费顺序被指定,最大的消费并发数就是这个消费者组的消息队列的订阅数。

  • 并发:
    当消费消息是并发的,最大的消息并发数只受限于每个消费客户端线程池规定的数。

警告:这个模式下消息顺序不再被保证。

展开阅读全文

没有更多推荐了,返回首页