针对现在还算不计较好用的RocketMq给大家做个简单总结,方便新手寻找学习方向,也方便老鸟回顾,未更高的境界冲刺,未更好的职业规划做准备。希望能给大家提供帮助。
组件 | 功能描述 |
---|---|
NameServer | 轻量级服务发现组件,管理 Broker 路由信息(无状态,可集群部署)。 |
Broker | 消息存储与转发核心节点,处理生产者和消费者的请求。 |
Producer | 消息生产者,向 Broker 发送消息。 |
Consumer | 消息消费者,从 Broker 拉取消息并处理。 |
Topic | 消息的逻辑分类,生产者按 Topic 发送消息,消费者按 Topic 订阅消息。 |
MessageQueue | Topic 的分区,每个 Topic 可划分为多个 MessageQueue,实现并行生产和消费。 |
依赖配置:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rocketmq</artifactId>
</dependency>
生产者示例:
@Service
public class ProducerService {
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void sendMessage(String topic, String message) {
rocketMQTemplate.convertAndSend(topic, message);
}
// 发送事务消息
public void sendTransactionMessage(String topic, String message) {
rocketMQTemplate.sendMessageInTransaction(topic,
MessageBuilder.withPayload(message).build(), null);
}
}
消费者示例:
@Service
@RocketMQMessageListener(
topic = "test-topic",
consumerGroup = "test-group",
selectorType = SelectorType.TAG, // 按 Tag 过滤
selectorExpression = "tagA"
)
public class ConsumerService implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
System.out.println("Received message: " + message);
}
}
NameServer 部署:
nohup sh bin/mqnamesrv &
Broker 部署:
nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf &
控制台(Dashboard):
flushDiskType
(ASYNC_FLUSH 提升吞吐量)。
sendMessageThreadPoolNums
(生产者并发线程数)。
组件 | 核心优势 | 适用场景 |
---|---|---|
RocketMQ | 高吞吐、顺序消息、事务消息 | 电商交易、金融扣款、日志同步 |
Kafka | 超高吞吐、流处理生态完善 | 日志收集、实时流处理 |
RabbitMQ | 协议丰富、低延迟 | 企业级异步通信、复杂路由场景 |
通过本文,初学者可掌握 RocketMQ 的核心原理与应用方法,有经验者可快速查阅配置与调优技巧。建议结合订单扣减、日志收集等场景实战演练,并深入源码理解其高性能设计!