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

 

猜你喜欢

转载自blog.csdn.net/weixin_40461281/article/details/104142688