消息 message:
消息是传递的信息。消息必须有一个主题,可以理解为你写信事邮寄的地址。消息也可能有一个标签选项是额外的键值对。
例如,你可能发送一条消息时设置一个key标记,并通过这个key在broker中筛选这条消息,用来处理特定的业务。
Message message1 = new Message("myTopic001","TAG-B","KEY-B","消息内容".getBytes());
1.消息队列 message queue
主题被划分为一个或多个子主题这就是消息队列。
2.标签tag
标签可以理解为更细一级的主题,为使用者提供更灵活的查找。有了标签同一业务产生的消息可以有相同的主题不同的标签,不同标签标记的可以有不同的用途。
标签可以让你的代码变得清晰连贯,还可以给RocketMQ提供更好的查询支持。
3.代理broker
broker是RockerMQ系统的重要组成部分。它接受并存储来自生产者发送的消息,处理来自消费者的拉取请求。
它也存储和消息有关的信息,包括消费者组,消费位置还有主题队列的信息。
4.消息模式 message model
⊙集群clustering
⊙广播broadcasting
消息顺序 message order
当DefaultMQPushConsumer 被设置好,你可能需要决定消费是顺序的还是并发的(默认为集群消费模式)
consumer.setMessageModel(MessageModel.CLUSTERING); //集群
consumer.setMessageModel(MessageModel.BROADCASTING); //广播
⊙顺序
有序的消息意味着消息的使用顺序与生产者为每个消息队列发送的顺序相同。
如果你的使用场景要求必是须顺序的,你要确保只用一个队列存放消息。
注意:如果消费顺序被指定,最大的消费并发数就是这个消费者组的消息队列的订阅数
⊙并发:
当消费消息是并发的,最大的消息消费数只受限于每个消费客户端线程池规定的数。
注意:这个模式下顺序不在被保证。
集群消息:
集群消息是指**集群化部署消费者**
当使用集群消费模式时,MQ 认为任意一条消息只需要被集群内的任意一个消费者处理即可。
特点:
- 每条消息只需要被处理一次,broker只会把消息发送给消费集群中的一个消费者
- 在消息重投时,不能保证路由到同一台机器上
- 消费状态由broker维护
广播消息:
当使用广播消费模式时,MQ 会将每条消息推送给集群内所有注册过的客户端,保证消息至少被每台机器消费一次。
**特点**
- 消费进度由consumer维护
- 保证每个消费者消费一次消息
- 消费失败的消息不会重投