RocketMQ

Posted by Xsp on September 1, 2018

Quick start

  1. 下载

在 ~/.bashrc 配置

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

并使之生效 source ~/.bashrc

  1. 启动 nameserver
nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log
  1. 启动broker
nohup sh bin/mqbroker -n localhost:9876 &
tail -f ~/logs/rocketmqlogs/broker.log
  1. 收发消息demo

先配置 ~/.bash_profile

export NAMESRV_ADDR=localhost:9876
source ~/.bash_profile

发消息

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

收消息

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

也可以直接看给的官方的源代码的demo:

rocketmq-all-4.3.0/example/src/main/java/org/apache/rocketmq/example/quickstart/Consumer.java rocketmq-all-4.3.0/example/src/main/java/org/apache/rocketmq/example/quickstart/Producer.java

需要修改代码加上 nameserver 的地址,再运行。

consumer.setNamesrvAddr("127.0.0.1:9876");

producer.setNamesrvAddr("127.0.0.1:9876");
  1. 关闭server
sh bin/mqshutdown broker
sh bin/mqshutdown namesrv

Simple Message Example

RocketMQ 发消息的三种方式:

  • reliable synchronous
  • reliable asynchronous
  • one-way

Order Message

RocketMQ 支持有序的消息,这个顺序是 FIFO

Architecture

NameServer Cluster

服务发现和路由

  • 接收Broker的注册并通过心跳机制来检查Broker是否存活
  • 每个nameserver都包含Broker集群的全部路由信息,以及clients的查询队列

Broker Cluster

消息存储。有 Topic 和 Queue 两种机制。支持 push/pull 模型。有容错机制…

参考

  • http://rocketmq.apache.org/