开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第四阶段:消息消费要注意的细节】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/686/detail/11912
消息消费要注意的细节
1、代码
@RocketMQMessageListener(
I consumerGroup ="shop",//消费者分组
topic="order-topic",//要消费的主题
consumeMode=ConsumeMode.CONCURRENTLY//消费模式:无序和有序
messageMode]=MessageMode1.CLUSTERING,//消息模式:广播和集群,默认是集群
)
public class SmsService implements
RocketMQListener<Order> {}
消费的细节是围绕着 RocketMQ Listener, RocketMQ 的消息监听路径展开:
packagecom.itheima.service;
import com.itheima.domain.order;
import lombok.extern.slf4i.Slf4i;
import
org.apache.rocketmg.spring.annotation.RocketMOMes
sageListener:
import
orq.apache.rocketmg.spring.core.RocketMolistener;
import orq.springframework.stereotype.Service;
@S1f4j
@Service
//consumerGroup-消费者组名topic-要消费的主题
@RocketMOMessageListener(
consumerGroup="shop-user",//消费者组名
topic="order-topic",//消费主题
consumeMode =ConsumeMode.CONCURRENTLY/消费模式,
指定是否顺序消费CONCURRENTLY(同步默认) ORDERLY()
messaqeModel =MessaqeMode1.CLUSTERING//消息模式
BROADCASTING(广播) CLUSTERING(集群,默认)
//点进 messaqeModel 可以看到默认的为集群模式
2、RocketMQ 支持两种消息模式
广播消费:每个消费者实例都会收到消息,也就是一条消息可以被每个消费者实例处理:
集群消费:一条消息只能被一个消费者实例消费
比如有两个消息消费者,生产者向里面投递一个消息,如果是集群意味着一个消息消费者消费,另一个没法再消费。如果是广播意味着一个消息会消费一次,另一个也消费一次。