SpringBoot 2.X 整合 RocketMQ 實現消息生產消費(RocketMQTemplate實現)

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

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章