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选择

    @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();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值