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