开发准备
依赖
新建Maven工程,引入依赖
Maven地址:https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client 请根据安装的版本引入对应的依赖
我这里安装的是当前最新版4.5.0,所以我对应的依赖是:
1 | <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client --> |
- 这里我还引入了一个rocketmq-example,这里面的示例代码和官方文档是一直的,可以直接参考
1 | <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-example --> |
- 前一步的RocketMQ服务搭建并运行无误就可以进入Java编码了
命令
- 这里重点说一下,防火墙请放行9876端口,如果可以请把防火墙彻底关掉。
- 贴上CentOS7中 firewalld 的基本使用命令:
- 启动:
systemctl start firewalld
- 关闭:
systemctl stop firewalld
- 查看状态:
systemctl status firewalld
- 开机禁用 :
systemctl disable firewalld
- 开机启用 :
systemctl enable firewalld
- 放行9876端口:
firewall-cmd --zone=public --add-port=9876/tcp --permanent
(–permanent永久生效,没有此参数重启后失效) - 重新载入:
firewall-cmd --reload
(修改端口后需要重新载入) - 查看9876端口:
firewall-cmd --zone= public --query-port=9876/tcp
- 删除9876端口:
firewall-cmd --zone= public --remove-port=9876/tcp --permanent
- 启动:
文档
- 本篇代码参照自官方文档及 rocketmq-example 中的示例代码
- 官方文档及快速上手示例地址:https://rocketmq.apache.org/docs/simple-example/
- Producer示例代码路径:
org.apache.rocketmq.example.quickstart.Producer
(需导入rocketmq-example
依赖) - Customer示例代码路径:
org.apache.rocketmq.example.quickstart.Customer
(需导入rocketmq-example
依赖)
编码运行
生产者
- 代码参考,每个步骤写有注释
1 | package com.rocketmq.demo; |
消费者
- 消费者代码,同样在注释中说明
1 | package com.rocketmq.demo; |
# 采坑记录
RocketMQ服务外网不能访问
- 如果你按照上一篇的方式运行,那么你可能会遇到下面这种错误(在本地运行RocketMQ不会遇到这个问题)
1 | org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout |
那么你需要修改一些配置,在编译后的目录中的
conf
文件夹下有一个broker.conf
配置文件,在其末尾添加如下配置:vim /root/rocketmq-4.5.0/conf/broker.conf
1 | brokerClusterName = DefaultCluster |
- 然后将broker的运行方式改为:
nohup sh bin/mqbroker -c conf/broker.conf &