1.安装RocketMQ
请参考 : docker 安装 rocketmq(namesrv broker 与可视化控制台 console)
2.项目结构
3.创建父工程
pom.xml
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lionli.rocketmq</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<description>springboot 整合 rocketmq 教程demo</description>
<modules>
<module>rocketmq-produce</module>
<module>rocketmq-consumer</module>
</modules>
4.创建消息生产端
pom.xml
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.lionli.rocketmq</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
</parent>
<artifactId>rocketmq-produce</artifactId>
<description>消息生产者</description>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
</dependencies>
RocketMQProduceApplication.java 启动类
/**
* @author Lion Li
*/
@SpringBootApplication
public class RocketMQProduceApplication {
public static void main(String[] args) {
SpringApplication.run(RocketMQProduceApplication.class, args);
}
}
application.yml 配置文件
spring:
application:
name: springboot-rocketmq-demo-produce
server:
port: 8000
rocketmq:
# rocketmq地址
name-server: 192.168.101.11:9876
producer:
# 必须填写 group
group: test-group
创建消息体 TestMessaging.java 这里使用了lombok
/**
* @author Lion Li
*/
@Data
@Accessors(chain = true)
public class TestMessaging {
/**
* 消息id
*/
private String msgId;
/**
* 消息内容
*/
private String msgText;
}
编写消息投递方法 TestController.java
/**
* @author Lion Li
*/
@RestController
public class TestController {
@Autowired
private RocketMQTemplate rocketMQTemplate;
/**
* 普通消息投递
*/
@GetMapping("/test")
public String test(String msg) {
TestMessaging testMessaging = new TestMessaging()
.setMsgId(UUID.randomUUID().toString())
.setMsgText(msg);
rocketMQTemplate.convertAndSend("add-bonus", testMessaging);
return "投递消息 => " + msg + " => 成功";
}
}
启动消息生产端 访问 http://localhost:8000/test?msg=Lion Li
查看rocketmq控制台
点击查看 消息详情
消息投递成功
5.创建消息消费端
pom.xml
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.lionli.rocketmq</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
</parent>
<artifactId>rocketmq-consumer</artifactId>
<description>消息消费者</description>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
</dependencies>
RocketMQConsumerApplication.java 启动类
/**
* @author Lion Li
*/
@SpringBootApplication
public class RocketMQConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(RocketMQConsumerApplication.class, args);
}
}
application.yml
spring:
application:
name: springboot-rocketmq-demo-consumer
server:
port: 8081
rocketmq:
# rocketmq 地址
name-server: 192.168.101.11:9876
消息体 TestMessaging.java
/**
* @author Lion Li
*/
@Data
@Accessors(chain = true)
public class TestMessaging {
/**
* 消息id
*/
private String msgId;
/**
* 消息内容
*/
private String msgText;
}
创建主题通道监听 AddBonusListener.java
@Slf4j
@Service
// topic 主题要与消息生产者一致
@RocketMQMessageListener(consumerGroup = "consumer-group", topic = "add-bonus")
public class AddBonusListener implements RocketMQListener<TestMessaging> {
@Override
public void onMessage(TestMessaging testMessaging) {
log.warn("消费到消息 => "+testMessaging.toString());
}
}
启动消息消费端 查看是否可以消费到消息
成功消费消息
项目已上传到gitee
地址: springboot 整合 rocketmq 教程demo
如果帮到您了,请帮忙点个star