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();
    }
相关推荐
互联网搬砖老肖5 小时前
Web 架构之攻击应急方案
前端·架构
zizisuo5 小时前
9.3.云原生架构模式
云原生·架构
风虎云龙科研服务器10 小时前
英伟达Blackwell架构重构未来:AI算力革命背后的技术逻辑与产业变革
人工智能·重构·架构
邪恶的贝利亚12 小时前
《Docker 入门与进阶:架构剖析、隔离原理及安装实操》
docker·容器·架构
镜舟科技16 小时前
湖仓一体架构在金融典型数据分析场景中的实践
starrocks·金融·架构·数据分析·湖仓一体·物化视图·lakehouse
Ramseyuu17 小时前
Mybatis-plus
微服务·云原生·架构
charlie11451419117 小时前
内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
linux·学习·架构·内存管理
堕落年代18 小时前
SpringBoot的单体和分布式的任务架构
spring boot·分布式·架构
慧一居士19 小时前
Memcached 服务搭建和集成使用的详细步骤示例
数据库·架构·nosql·memcached
互联网搬砖老肖20 小时前
Web 架构之负载均衡会话保持
前端·架构·负载均衡