springboot整合rocketmq
win系统安装环境
下载rocketmq
将下载好的压缩包进行解压,解压完后打开文件夹
,进入到bin文件夹里面
打开cmd窗口,执行一下两条命令
start mqnamesrv
start mqbroker -n 127.0.0.1:9876 autoCreateTopicEnable=true
执行命令启动完成后如下图所示,执行若报错,检查一下jdk版本还有环境都好着没,文件路径上尽量避免中文以及空格,具体原因需具体分析
引入依赖
<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency>
添加配置
在application.yml文件中添加配置
rocketmq: name-server: 127.0.0.1:9876 consumer: group: my_consumer_group producer: # 发送同一类消息的设置为同一个group,保证唯一 group: my_producer_group # 发送消息超时时间,默认3000 sendMessageTimeout: 10000 # 发送消息失败重试次数,默认2 retryTimesWhenSendFailed: 2 # 异步消息重试此处,默认2 retryTimesWhenSendAsyncFailed: 2 # 消息最大长度,默认1024 * 1024 * 4(默认4M) maxMessageSize: 4096 # 压缩消息阈值,默认4k(1024 * 4) compressMessageBodyThreshold: 4096 # 是否在内部发送失败时重试另一个broker,默认false retryNextServer: false
生产者
import com.alibaba.fastjson2.JSONObject;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
@Component
public class RocketmqService {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@Async
@PostConstruct
public void init() {
new Thread(() -> {
Thread thread = Thread.currentThread();
while (true) {
synchronized (thread) {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("time", System.currentTimeMillis());
rocketMQTemplate.asyncSend("time", jsonObject, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("send message success...");
}
@Override
public void onException(Throwable throwable) {
System.err.println("send message error..." + throwable);
}
});
thread.wait(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}, "test").start();
}
}
消费者
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
@Slf4j
@Component
@RocketMQMessageListener(topic = "time", consumerGroup = "my_consumer_group")
public class RocketmqListener implements RocketMQListener<JSONObject> {
@Override
public void onMessage(JSONObject message) {
log.debug("message--->{}", message);
}
}