消息队列:发送消息实现
本文主要基于实现使用的角度介绍和消息队列发送消息的方式和使用场景。
RocketMQ 发送消息
RocketMQ 支持三种方式的消息发送:
同步发送,Producer 向消息队列发送消息,同步等待直到 Broker 返回发送结果。比较适合于重要的消息通知等场景。
异步发送,Producer 向 MQ 发送消息,并执行发送 CallBack 函数,发送完立即返回,发送线程不阻塞。消息发送成功或失败的回调回函在一个新的线程中执行。比较适合于对响应时间比较敏感的场景,即发送端不能容忍长时间地等待 Broker 的响应。
oneway 发送:Producer 向 MQ 发送消息,无需等待 Broker 的结果,也不注册 Callback 函数。即 Producer 发送消息,不需要关注消息是否成功存储在服务器上。比较适合于不关心发送结果的场景,例如日志的发送。
代码实现
首先,需要安装 RocketMQ 并启动NameService
和Broker
,我选择的是最新的 4.9.0,下载号安装包之后,进入相应的目录。
1、启动NameService
可以通过日志确认是否启动成功执行tail -f ~/logs/rocketmqlogs/namesrv.log
,看到
即可。
2、启动Broker
刚开始我采用默认配置,启动 Broker 都失败,原来默认的最大和最小的内存配置都是 8G,vim bin/runbroker.sh
,将[1]:
修改为:
之后,参考[2]实现了三种方式的消息发送。
在调试的过程中出现过多次,No route info of this topic
的错误,后来参考[3],将 MVN 中采用的 RocketMQ 的版本由 4.3.0 更改为 4.9.0 才可以成功执行。
参考资料
版权声明: 本文为 InfoQ 作者【正向成长】的原创文章。
原文链接:【http://xie.infoq.cn/article/7ba8a8241f84061472a22d595】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论