RocketMQ支持以下主要的消费模式:
- 消费者组(Consumer Group):多个消费者并行消费同一个Topic的消息,消息会被平均分摊到各个消费者。主要适用于提高消费并行度的场景。
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroup1");
- 广播(Broadcast):一个消息会被多个消费者消费,主要用于通知场景。
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(MessageModel.BROADCASTING);
- 集群消费(Clustering):一个集群分为多个模块,每个模块消费一部分Topic。主要用于大并发场景提高单机吞吐。
String remotingClient = RemotingClientConfig.defaultClient;
String nameSrvAddr = "127.0.0.1:9876;10.10.10.10:9876";
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(remotingClient,nameSrvAddr, Clustering);
- 顺序消息消费:严格控制单个消费者组内消息的消费顺序。主要用于实现有序性较强的业务场景。
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroup1");
consumer.registerMessageListener(new MessageListenerOrderly() {
// 消息会严格按顺序消费
});
- 定时消息消费:定时消费发布到Broker的定时/延迟消息。
ScheduledMessageConsumer scheduledConsumer = new ScheduledMessageConsumer(ChangeInstanceNameUtil.build("SCHEDULED_SUB_CONSUMER"));
scheduledConsumer.registerMessageListener(new MessageListenerConcurrently() {
// 消费定时消息
});
scheduledConsumer.start();
RocketMQ通过不同的消费模式可以解决不同业务场景下的消费需求,如提高消费性能、消息通知、有序消费等。熟练掌握各种消费模式,可以让我们更加灵活和高效地使用RocketMQ构建消息驱动的分布式系统。