RocketMQ核心概念

RoketMq架构:

  • NameServer:

Topic 的路由注册中心,为客户端根据 Topic 提供路由服务。NameServer是去中心化的,每个NameServer都保存了完整的路由信息。

  • Broker:

消息存储。

  • client:

producer:消息发送

consumer:消息消费

  • 消息消费模式:广播,集群

  • 负载均衡算法

MessageQueueSelector (org.apache.rocketmq.client.producer)

java 复制代码
producer.send(msg, new MessageQueueSelector() {
    @Override
    public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) {
        int index = arg.hashCode() % mqs.size();
        return mqs.get(index);
    }
}, "orderId123");

MessageQueueSelector (org.apache.rocketmq.proxy.service.route) 在RocketMQ集群部署中,代理服务可能需要根据消息属性或集群状态动态选择目标Broker或队列。

MessageSelector (org.apache.rocketmq.client.consumer) 消费者端的消息选择器,用于通过SQL表达式过滤消息(基于消息属性或Tag)。

java 复制代码
consumer.subscribe("TopicTest", MessageSelector.bySql("a > 5 AND b = 'hello'"));

QueueSelector (org.apache.rocketmq.proxy.processor) 代理处理器(Processor)中的队列选择接口,可能用于代理内部处理消息时的队列分配逻辑。

  • 生产者侧MessageQueueSelector 提供自定义队列选择能力,确保消息有序性或分区。
  • 消费者侧MessageSelector 实现消息过滤,提升消费效率。
  • 代理层 :同名的MessageQueueSelectorQueueSelector服务于代理的路由和负载均衡逻辑,对用户透明。

这些类共同构成了RocketMQ灵活的消息路由和过滤机制,适用于不同场景下的消息处理需求。

  • 消费模型:并发,顺序

  • 事务消息:

  • 定时消息:16个延时级别

RocketMQ可以通过ack保证消息至少被消费一次,但是不能保证消息只被消费一次。

相关推荐
阿昌喜欢吃黄桃14 天前
RocketMq事务消息原理
java·中间件·消息队列·rocketmq·mq
huisheng_qaq17 天前
【项目篇-01】Vmware虚拟机和环境安装配置
redis·mysql·canal·rocketmq·es·vaware虚拟机
码农飞哥18 天前
RocketMQ消费接口设计实战:为什么HTTP回调接口必须吞掉所有异常,始终返回成功?
网络协议·http·中间件·消息队列·rocketmq
阿维的博客日记18 天前
细说RocketMQ双网卡问题
rocketmq
北城以北888818 天前
RocketMQ简介
java·spring boot·后端·rocketmq
IT界的老黄牛19 天前
RocketMQ 4.x 任意秒数延迟消息工程实战:MQ 粗延迟 + Redis 补精度 + MDC 链路透传
redis·rocketmq·事务消息·延迟消息
至此流年莫相忘19 天前
Windows 环境下 RocketMQ 安装与 NSSM 后台服务化部署指南
windows·rocketmq
折哥的程序人生 · 物流技术专研20 天前
《Java 100 天进阶之路》第95篇:消息队列基础(RocketMQ/Kafka)(2026版)
java·面试·kafka·rocketmq·java-rocketmq·求职招聘
景川呀20 天前
RocketMq知识点
java·rocketmq·java-rocketmq
cfm_291422 天前
RocketMQ源码深度解析(三)消息持久化机制
rocketmq