1.安装RocketMQ服务器
下载 | RocketMQ 从官网下载4.7.1的版本。RocketMQ升级很快,spring官网跟不上它的升级速度,无法及时做对应版本的springboot启动库。所以还是使用经过实践的老版本,稳妥点。
1.1上传bin包,并解压
1.2修改配置文件
进入bin目录,
(1)修改runserver.sh,修改默认使用的内存大小,默认的太大了,一般服务器启动不了,会失败。
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
(2)修改runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
(3)修改tools.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
进入config 修改broker.conf
1.3 启动
1.3.1 后台启动注册中心 nohup sh bin/mqnamesrv &
通过 cat nohup.out 查看是否有启动成功
1.3.2 后台启动mqtt代理转发服务
nohup sh bin/mqbroker -n 192.168.1.55:9876 -c ./conf/broker.conf &
通过 cat nohup.out 查看是否有启动成功
2.springBoot 集成生产者与消费者
2.1 pom.xml 增加依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
2.2增加配置
spring.application.name=MyRocketMQ
server.port=8080
# NameServer地址
rocketmq.name-server=192.168.1.55:9876
# 默认的消息组
rocketmq.producer.group=springBootGroup
2.3生产者
package com.xjc.myrocketmq.myrocketmqclient;
import org.apache.rocketmq.client.producer.TransactionSendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
/**
* @author whati
* @version 1.0
* @date 2022-12-10 13:21
*/
@Component
public class SpringBootProducer {
@Autowired
private RocketMQTemplate rocketMQTemplate;
// 发送消息的实例
public void sendMessage(String topic, String msg) {
rocketMQTemplate.convertAndSend(topic, msg);
}
// 发送事务消息的实例
public void sendMessageInTransaction(String topic, String msg) throws InterruptedException {
// String[] tags = {"TagA", "TagB", "TagC", "TagD", "TagE"};
// for (int i = 0; i < 10; i++) {
// Message<String> message = MessageBuilder.withPayload(msg).build();
// String destination = topic + ":" + tags[i % tags.length];
//
// TransactionSendResult sendResult =
// rocketMQTemplate.sendMessageInTransaction(destination, message, destination);
//
// System.out.printf("%s%n", sendResult);
// Thread.sleep(10);
// }
}
}
2.4消费者 启动项目这后,订阅主题为TestTopic的消息
package com.xjc.myrocketmq.myrocketmqclient;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
/**
* @author whati
* @version 1.0
* @date 2022-12-10 14:42
*/
@Component
@RocketMQMessageListener(consumerGroup = "springBootGroup", topic = "TestTopic")
public class SpringBootConsumer implements RocketMQListener {
@Override
public void onMessage(Object message) {
System.out.println("Received message : "+ message);
}
}