RocketMQ

一、MQ概述

1.1、RocketMQ简介

RocketMQ是一个开源的分布式消息中间件,最初由阿里巴巴集团开发。它的设计目标是为了在高并发、高吞吐量的场景下,实现可靠的消息传输,并且具有良好的可伸缩性和可扩展性。

1.2、MQ用途

限流削峰
异步与解耦
数据分发

限流削峰
MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。
在这里插入图片描述
异步解耦

上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞吐量与并发度,且系统耦合度太高、而异步调用则会解决这些问题。所以两层之间若要实现由同步到异步的转化,一般性做法就是,在这两层间添加一个MQ层。

在这里插入图片描述
数据分发
在这里插入图片描述

1.3、常见MQ产品

RabbitMQ
RabbitMQ是使用ErLang语言开发的一款MQ产品。其吞吐量较Kafka与RocketMQ要低,且由于其不是Java语言开发,所以公司内部对其实现定制化开发难度较大。
Kafka
Kafka是使用Scala/Java语言开发的一款MQ产品。其最大的特点就是高吞吐量

### RocketMQ 使用指南概述 RocketMQ 是阿里巴巴开源的一款分布式消息中间件,具有高吞吐量、低延迟和可靠的特性。以下是关于如何使用 RocketMQ 的一些核心概念和操作方法。 #### 1. 生产者发送消息 生产者负责将消息发送到 RocketMQ 中的消息队列。常见的发送方式包括同步发送、异步发送以及单向发送。其中单向发送适合于不需要确认机制的场景,例如日志收集[^4]。 ```java public class OnewayProducer { public static void main(String[] args) throws Exception { // 初始化生产者实例并设置组名 DefaultMQProducer producer = new DefaultMQProducer("message-group"); // 配置 NameServer 地址 producer.setNamesrvAddr("localhost:9876"); // 启动生产者 producer.start(); // 循环发送消息 for (int i = 0; i < 10; i++) { Message msg = new Message( "TopicTest", // 主题名称 "TagA", // 消息标签 ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET) // 消息体 ); // 单向发送消息 producer.sendOneway(msg); } // 关闭生产者 producer.shutdown(); } } ``` #### 2. 消费者接收消息 消费者用于从 RocketMQ 接收消息,并支持两种消费模式:集群消费模式和广播消费模式。默认情况下采用的是集群消费模式,在这种模式下每条消息只会被其中一个消费者实例消费[^5]。 ```java public class PushConsumerDemo { public static void main(String[] args) throws MQClientException, InterruptedException { // 实例化消费者对象 DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer-group"); // 设置 NameServer 地址 consumer.setNamesrvAddr("localhost:9876"); // 订阅主题及其过滤条件 consumer.subscribe("TopicTest", "*"); // 注册回调函数来处理接收到的消息 consumer.registerMessageListener((List<MessageExt> msgs, ConsumeConcurrentlyContext context) -> { System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs); return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; }); // 开始启动消费者服务 consumer.start(); System.out.println("Consumer Started."); } } ``` #### 3. RocketMQ Streams 流计算框架简介 除了基本的消息传递功能外,RocketMQ 还提供了流计算的能力——即 **RocketMQ Streams**。它允许开发者基于消息流构建复杂的实时数据分析应用[^2]。 --- ### 如何选择合适的消息中间件? 当面对多种消息中间件的选择时,需考虑具体的业务需求。例如,如果更关注数据的一致性、可靠性和较高的分区数量,则 RocketMQ 可能是一个更好的选项;而 Kafka 更擅长大规模的数据处理任务,在性能优化方面表现突出[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值