RocketMQ使用浅析(一)

什么是RocketMQ

一款由阿里巴巴集团开发,对付双11削峰填谷的消息中间件。

RocketMQ的构成

1.NameServer

一个注册中心,需要比Broker先启动,具有以下作用:

Broker定时向它打报告,注册自己

生产者会从它这打听Broker的地址

消费者会从它这打听Broker的地址

2.Broker

负责消息的存储与转发工作

3.生产者

负责生产消息

4.消费者

负责消费消息

RocketMQ的运转流程

1.NameServer启动

2.Broker启动,并向NamerServer注册自己

3.生产者从NameServer打听Broker的地址,生产者根据地址向Broker发送某个主题(Topic)的消息

4.消费者从NameServer打听Broker的地址,找到Broker,根据自己感兴趣的主题(Topic)那里拿取到消息,进行消费

消息的发送方式

1.我只管发,你收不到关我鸟事

       DefaultMQProducer producer = new DefaultMQProducer("oneway");
        //NameServer地址
        producer.setNamesrvAddr("192.168.1.2:9876");

        //生产者实例启动
        producer.start();
        //创建一个消息,指定topic、tag和消息体
        String msgBody="Hello RocketMQ";
        Message msg = new Message("TopicTest","TagA", JSON.toJSONBytes(msgBody));
        //发送消息
        producer.sendOneway(msg);

        //生产者实例不再使用时关闭.
        producer.shutdown();

2.这是个傻傻等着消息发完的老实人

        DefaultMQProducer producer = new DefaultMQProducer("sync");
        //NameServer地址
        producer.setNamesrvAddr("192.168.1.2:9876");

        //生产者实例启动
        producer.start();
        //创建一个消息,指定topic、tag和消息体
        String msgBody="Hello RocketMQ";
        Message msg = new Message("TopicTest","TagA", JSON.toJSONBytes(msgBody));
        //发送消息
        SendResult sendResult = producer.send(msg);

        //生产者实例不再使用时关闭.
        producer.shutdown();

3.这是个一心多用的小机灵鬼

        DefaultMQProducer producer = new DefaultMQProducer("async");
        //NameServer地址
        producer.setNamesrvAddr("192.168.1.2:9876");

        //生产者实例启动
        producer.start();
        //发送异步失败时的重试次数(默认值)
        producer.setRetryTimesWhenSendAsyncFailed(2);
        //创建一个消息,指定topic、tag和消息体
        String msgBody="Hello RocketMQ";
        Message msg = new Message("TopicTest","TagA", JSON.toJSONBytes(msgBody));
        //发送消息
        producer.send(msg, new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.printf("%-10d OK  %n" , new String(msg.getBody()));
            }
            @Override
            public void onException(Throwable e) {
                System.out.printf("%-10d Exception %n", e);
                e.printStackTrace();
            }
        });

        //生产者实例不再使用时关闭.
        producer.shutdown();

RocketMQ的消费模式

集群消费

使用同一个Group Id的消息订阅者属于同一个集群,一条消费只会被集群中的一个消费者消费。

广播消费

RocketMQ会将消息推送给所有的客户端。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值