什么是RocketMQ?

Apache RocketMQ是一个由阿里巴巴开发并贡献给Apache的分布式消息系统,其在2017年双十一期间处理了万亿级消息,峰值TPS达到5600万。RocketMQ包括Producer、Consumer、NameServer和Broker等组件,其中Producer和Consumer分别负责消息生产和消费,NameServer协调集群,而Broker则承担消息的实际存储和处理。

 

RocketMQ简介

 

Apache RocketMQ是一个采用Java语言开发的分布式的消息系统,由阿里巴巴团队开发,与2016年底贡献给Apache,成为Apache的一个顶级项目。在 2017 年的双十一当天,整个阿里巴巴集团通过 RocketMQ 流转的线上消息达到了 万亿级,峰值 TPS 达到5600 万,在阿里大中台策略上发挥着举足轻重的作用 。

 

 

RocketMQ架构图

 

  • Producer
    • 消息生产者,负责产生消息,一般由业务系统负责产生消息。
    • Producer Group,一类 Producer 的集合名称,这类 Producer 通常发送一类消息,且发送逻辑一致。
  • Consumer
    • 消费者,负责消费消息,一般是后台系统负责异步消费。
    • Push Consumer服务端向消费者端推送消息
    • Pull Consumer消费者端向服务定时拉取消息
    • Consumer Group,一类 Consumer 的集合名称,这类 Consumer 通常消费一类消息,且消费逻辑一致。
  • NameServer
    • 集群架构中的组织协调员
    •  收集broker的工作情况
    • 不负责消息的处理
  • Broker
    • 是RocketMQ的核心负责消息的发送、接收、高可用等(真正干活的)
    • 需要定时发送自身情况到NameServer,默认10秒发送一次,超时2分钟会认为该broker失效。
  • Topic
    • 不同类型的消息以不同的Topic名称进行区分,如User、Order等
    • 存在于Broker中,是逻辑概念
    • Message Queue,消息队列,用于存储消息
在Android平台上使用RocketMQ可以通过以下步骤实现: 1. **添加依赖**: 首先,在你的项目的`build.gradle`文件中添加RocketMQ的依赖。确保使用最新版本的RocketMQ客户端库。 ```groovy dependencies { implementation 'org.apache.rocketmq:rocketmq-client:4.9.4' } ``` 2. **初始化RocketMQ**: 在你的Android应用中初始化RocketMQ的Producer和Consumer。确保在合适的生命周期方法中进行初始化和销毁操作。 ```java import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.common.message.Message; import org.apache.rocketmq.common.message.MessageExt; public class RocketMQManager { private static final String NAMESRV_ADDR = "your_nameserver_address"; private static final String PRODUCER_GROUP = "your_producer_group"; private static final String CONSUMER_GROUP = "your_consumer_group"; private static final String TOPIC = "your_topic"; private static DefaultMQProducer producer; private static DefaultMQPushConsumer consumer; public static void initProducer() throws MQClientException { producer = new DefaultMQProducer(PRODUCER_GROUP); producer.setNamesrvAddr(NAMESRV_ADDR); producer.start(); } public static void sendMessage(String messageBody) throws Exception { Message msg = new Message(TOPIC, messageBody.getBytes()); producer.send(msg); } public static void initConsumer() throws MQClientException { consumer = new DefaultMQPushConsumer(CONSUMER_GROUP); consumer.setNamesrvAddr(NAMESRV_ADDR); consumer.subscribe(TOPIC, "*"); consumer.registerMessageListener(new MessageListenerConcurrently() { @Override public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) { for (MessageExt msg : msgs) { System.out.println(new String(msg.getBody())); } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } }); consumer.start(); } public static void destroy() { if (producer != null) { producer.shutdown(); } if (consumer != null) { consumer.shutdown(); } } } ``` 3. **使用RocketMQ**: 在你的应用中使用RocketMQ进行消息的发送和接收。 ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { RocketMQManager.initProducer(); RocketMQManager.initConsumer(); } catch (MQClientException e) { e.printStackTrace(); } // 发送消息 try { RocketMQManager.sendMessage("Hello, RocketMQ!"); } catch (Exception e) { e.printStackTrace(); } } @Override protected void onDestroy() { super.onDestroy(); RocketMQManager.destroy(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值