rocketmq架构解析以及rabbimq对比

对比rabbitmq

为了偷懒,拿了张本人过往rabbimq老图,多了点没必要的connection细节

1 rocketmq的queue水平拆分了一个topic的消息,而rabbitmq最多只能做到筛选消息,queue之间并没有关联。

2 生'''产者和消费者指向的都是proxy,简化了操作者的配置。proxy可以通过负载均衡来选择消费者组将要消费的队列,从而选择消费者组所要消费的队列。rabbitmq需要手动指定生产者的exchanger和消费者的queue。

2 rocketmq有自己的存储淘汰机制以及offset机制,从而使得queue的内容可以复用。而rabbitmq更像一个buffer,阅后即删。

3 rocketmq有自己的messageGroup和messageId机制,从而保证了自己可以在消费者组多消费者消费时,依然还可以保持顺序机制。而rabbitmq的顺序机制必须指定单一消费者消费队列,来保证顺序。

4 rocketmq原生支持事务机制,可以保证在broker和生产者之间完成分布式事务。而rabbitmq虽然也可以实现分布式事务,但是是由生产者和消费者之间达成的,多了一层broker,提高了复杂度,性能还更差。

从crud感知架构

对于消费者而言,需要完成消费类型(推/拉),消费者组,消费过滤条件(tag),topic选择

Java 复制代码
    @Test
    public void t1() throws Exception {
        final ClientServiceProvider provider = ClientServiceProvider.loadService();
        String endpoints = "192.168.96.200:8081";
        ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
                .setEndpoints(endpoints)
                .build();
        String tag = "*";
        FilterExpression filterExpression = new FilterExpression(tag, FilterExpressionType.TAG);
        String consumerGroup = "testGroup";
        String topic = "first";
        PushConsumer pushConsumer = provider.newPushConsumerBuilder()
                .setClientConfiguration(clientConfiguration)
                .setConsumerGroup(consumerGroup)
                .setSubscriptionExpressions(Collections.singletonMap(topic, filterExpression))
                .setMessageListener(messageView -> {
                    System.out.println(messageView.getMessageId());
                    ByteBuffer body = messageView.getBody();
                    byte[] bytes = new byte[body.remaining()];
                    body.get(bytes);
                    String content = new String(bytes, StandardCharsets.UTF_8);
                    System.out.println("Received message: " + content);
                    return ConsumeResult.SUCCESS;
                })
                .build();
        Thread.sleep(Long.MAX_VALUE);
        // pushConsumer.close();
    }
相关推荐
扬帆破浪1 小时前
sidecar崩溃后前端怎么续命 重启策略与状态保留
前端·人工智能·架构·开源·知识图谱
漓漾li2 小时前
每日面试题(2026-05-15)
架构·go·agent
三无推导2 小时前
OpenHuman 开源项目详解:个人 AI 助手架构与核心技术拆解
人工智能·性能优化·架构·开源·ai助手
安当加密3 小时前
AES-256直接加密就够了?微服务架构下的敏感数据加密:信封加密、格式保留加密和字段级加密全解析
微服务·云原生·架构
闵孚龙4 小时前
Claude Code 状态恢复机制全解析:自动压缩后文件、技能、计划与 Agent 上下文如何不断片?
人工智能·架构·claude
您^_^4 小时前
专家(一):Claude Code 微服务实战——6 个服务从拆分到 K8s 部署,$0.45 全套 YAML 照抄
人工智能·windows·微服务·架构·kubernetes·个人开发·claude code
小杍随笔5 小时前
【iNovel 后端架构深度解析:基于 Rust + Tauri 2 的桌面应用服务端设计】
jvm·架构·rust
小杍随笔5 小时前
Axum+Leptos全栈集成实战
开发语言·后端·架构·rust
Shota Kishi6 小时前
基于 Solana Geyser gRPC 数据流的 pump.fun 代币铸造实时检测:流式架构与 HTTP/2 协议分析
网络协议·http·架构