头一次弄,只能弄个简单的,如果要深入学习,大家再找找别的。
我是centos上安装的,首先要保证上面你已经安装了jdk。No route info of this topic: order
1 下载
首先下载rocketmq,http://rocketmq.apache.org/dowloading/releases/ ,我用的是 rocketmq-all-4.8.0-bin-release.zip 这个,bin是已经编译完的,source是需要编译的。我上传到了/usr/local/rocketmq 下,我是解压完上传的,解压命令(unzip rocketmq-all-4.8.0-bin-release.zip)。文件结构如下
2 修改配置
启动参数 vim bin/runbroker.sh,
vim runserver.sh
vim conf/broker.conf 再最后加上下面三行
brokerIP1=服务器外网ip
namesrvAddr=服务器外网ip:9876
autoCreateTopicEnable=true
3 创建起停文件
编辑启动文件,为了以后启动方便,将命令封装一下。(vim 后面跟文件名,保存后可以创建文件)
mqnamesrv-start.sh:nohup sh rocketmq-all-4.8.0-bin-release/bin/mqnamesrv > logs/namesrv.out 2>&1 &
mqbroker-start.sh: nohup sh rocketmq-all-4.8.0-bin-release/bin/mqbroker -n 外网ip:9876 rocketmq-all-4.8.0-bin-release/conf/broker.conf > logs/broker.out 2>&1 &
tail -f logs/broker.out
注:-n 外网ip:9876 如果不加这个,producer发信息时会报No route info of this topic: order。
mqnamesrv-stop.sh: nohup sh rocketmq-all-4.8.0-bin-release/bin/mqshutdown namesrv
mqbroker-stop.sh: nohup sh rocketmq-all-4.8.0-bin-release/bin/mqshutdown broker
4 启动
先启动 namesrv:sh mqnamesrv-start.sh
在启动broker:sh mqbroker-start.sh
有人用命令测试发消息,我直接弄了两个项目。
5 rocketmq console
下载地址https://github.com/apache/rocketmq-externals.git ,有个单独的分支切换到这个分支就行。
改一下配置文件rocketmq.config.namesrvAddr=外网ip:9876。
上传到服务器上,然后启动,访问:localhost:port 就可以。
切换到cluster,能看到这个就可以了。
6 建两个springboot项目测试
producer demo
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
server.port=9101
rocketmq.name-server=外网ip:9876
rocketmq.producer.group=order
rocketmq.producer.retry-times-when-send-failed=3
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Override
public void sendOrder(Map map) {
for(int i=0;i<100;i++) {
Message<String> msg = MessageBuilder.withPayload("orderId:"+i).setHeader("KEYS", UUID.randomUUID()).build();
SendResult result = rocketMQTemplate.syncSend("order:add", msg);
System.out.println(result.toString());
}
}
启动然后调用一下接口在console message里就能看到
生产完了开始消费了,创建consumer demo
server.port=9102
rocketmq.name-server=外网ip:9876
rocketmq.consumer.group=order
@Component
@RocketMQMessageListener(
topic = "order",
consumerGroup = "order",
selectorType = SelectorType.TAG,
selectorExpression = "add",
consumeMode = ConsumeMode.ORDERLY)
public class OrderListener implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
System.out.println("consumer ---------------------" + message);
}
}
这个时候启动在控制台就能看到消费的信息了。然后console message里就会消失。
到此一个简单的rocketmq 完事了,这是弄完后记录的,也不知道落没落啥。仅供参考。