demo系列-消息队列-RocketMQ
文章目录
1. Windows安装部署
前提
- JAVA_HOME路径不要空格
- broker启动指定本地IP
1.1 下载
https://rocketmq.apache.org/dowloading/releases/
https://mirror-hk.koddos.net/apache/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip
1.2 配置环境变量
ROCKETMQ_HOME
1.3 启动
1.3.1 启动name-server
start mqnamesrv.cmd
1.3.2 启动broker
start mqbroker -n 127.0.0.1:9876 -c broker.conf
broker.conf来自…/conf/broker.conf
并指定了brokerIP1=127.0.0.1
作用:https://blog.csdn.net/jiajiren11/article/details/80528406
1.3.3 下载|编译|启动rocketmq-console
git clone https://github.com/apache/rocketmq-externals.git
配置:rocket-console的server.port以及指定namesrv地址端口
- | - |
---|---|
server.port | 9999(随意) |
rocketmq.config.namesrvAddr | 127.0.0.1:9876 |
rocketmq.config.dataPath | (随意) |
编译: mvn clean package [--settings "maven/settings.xml"] -Dmaven.test.skip=true
启动: java -jar rocketmq-console-ng-2.0.0.jar
1.4 访问127.0.0.1:9999
2. Spring Boot集成RocketMQ
2.1 依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
2.2 配置
rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=test-group
2.3 生产者
@Service
public class ProducerService {
@Autowired
RocketMQTemplate rocketMQTemplate;
public void send(String topic, String message) {
String producerGroup = rocketMQTemplate.getProducer().getProducerGroup();
System.out.println("生产者组 = " + producerGroup);
rocketMQTemplate.syncSendOrderly(topic, MessageBuilder.withPayload(message + " sync send order with hashKey=sync-hash-key").build(), "sync-hash-key");
rocketMQTemplate.send(topic, MessageBuilder.withPayload(message).build());
rocketMQTemplate.asyncSendOrderly(topic, MessageBuilder.withPayload(message + " async send order with hashKey=async-hash-key").build(), "async-hash-key", new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("发送成功,结果:" + JSON.toJSONString(sendResult));
}
@Override
public void onException(Throwable throwable) {
System.out.println("发送失败,结果:" + throwable.getMessage());
}
});
}
}
2.4 定时任务:定时发送生产者
@EnableScheduling
@Component
public class ScheduledProducer {
@Autowired
ProducerService producerService;
@Scheduled(fixedRate = 3000)
public void fixedRateSend() {
System.out.println("定时任务——发送消息——时间:" + LocalDateTime.now());
producerService.send("test", "消息,时间=" + LocalDateTime.now().toString());
}
}
2.5 消费者
@Service
@RocketMQMessageListener(topic = "test", consumerGroup = "consumer-group-1")
public class ConsumerService implements RocketMQListener<String> {
@Override
public void onMessage(String s) {
System.out.println("接受消息=" + s);
}
}