该文章的目的:
1.翻译rocketMq 官方文档里的关键部分。
2.记录官方文档学习过程中遇到的问题
一、快速入门:http://rocketmq.apache.org/docs/quick-start/
mac 系统:官方文档的操作步骤如下:
$ unzip rocketmq-all-4.7.0-source-release.zip
$ cd rocketmq-all-4.7.0/
$ mvn -Prelease-all -DskipTests clean install -U
$ cd distribution/target/rocketmq-4.7.0/rocketmq-4.7.0
$ nohup sh bin/mqnamesrv &
$ nohup sh bin/mqbroker -n localhost:9876 &
$ export NAMESRV_ADDR=localhost:9876
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
遇到问题:
producer发送消息失败
原因可以参考该博客:
解决办法:指定brocker的IP地址后重新启动
# 关闭brocker
$ sh bin/mqshutdown broker
$ echo 'brokerIP1 = 127.0.0.1' >> conf/broker.conf
$ nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf &
此时producer发送消息成功
todo疑问:
1.brocker 为什么必须和nameserver地址保持一致?如果不保持一致,我们需要配置什么才可以访问通
2.nameserver 也没有指定配置为什么就是默认的localhost,brocker就是其他的IP
二、简单发送消息:http://rocketmq.apache.org/docs/simple-example/
展示了三种发送消息方式:
同步:可靠的同步传输有广泛的应用场景,例如:重要的消息通知,SMS通知,SMS营销系统等
异步:异步传输通常用在响应时间敏感的业务场景
单向:单向传输用在对可靠性要求不高的场景,比如:日志收集
三、有序消息:http://rocketmq.apache.org/docs/order-example/
RocketMq采用有序性规则是先进先出;
示例演示了全局和分区顺序消息的发送/接收。
问题:
我运行代码有问题,consumer 和producer 分别需要设置nameaddr
DefaultMQProducer producer = new DefaultMQProducer("example_group_name");
// 新增
producer.setNamesrvAddr("localhost:9876");
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("example_group_name");
// 新增
consumer.setNamesrvAddr("localhost:9876");
然后运行成功
四、广播消息:http://rocketmq.apache.org/docs/broadcast-example/
广播消息是给一个topic的所有订阅者发送消息,如果你想让一个topic的所有订阅者都收到消息,那么广播是一个不错的选择
问题:
1.本机单点暂时还没有测试,需要考虑一下如何配置多个consumer;
2.为什么是在消费者接收时设置模式,那如果一个消费者设置广播模式,另外一个非广播模式呢?
五、定时消息: http://rocketmq.apache.org/docs/schedule-example/
定时消息和普通消息的区别是:他们等到指定时间之后才会发送。
问题:
1.运行代码同样需要参考三,设置addr;
2.我运行的代码没有达到效果,delayLevel=3是什么意思?
六、批量发送:http://rocketmq.apache.org/docs/batch-example/
为什么批量?
批量发送消息可以改善短小消息的投递性能。
使用限制:
同一批投递的消息应该拥有:相同的topic,相同的等待确认,不支持定时消息;
此外,一个批次的消息大小不应该超过1MB
如何使用批量:
如果你同一时刻发送的消息大小不超过1MB,可以简单的使用batch,参考代码
当你发送大消息或者你不确认是否超过大小限制时,复杂度才会增加 。这个时候你最好将消息拆分一下,参考代码如下:
很不幸,官方文档剩下内容看完了,但是并没有得到更多的信息,发现https://github.com/apache/rocketmq/wiki/RIP-1-MQTT-Bridge 这个内容或许更详细,后续文档系列翻译wiki里的内容