适合新手小白——Spring Boot 整合 RocketMq

        Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金融级可靠业务消息首选方案,被广泛应用于互联网、大数据、移动互联网、物联网等领域的业务场景。 

官方首页:RocketMQ · 官方网站 | RocketMQ

官方文档:为什么选择RocketMQ | RocketMQ

下载链接:https://dlcdn.apache.org/rocketmq/5.0.0/rocketmq-all-5.0.0-bin-release.zip

可视化工具:GitHub - apache/rocketmq-dashboard: The state-of-the-art Dashboard of Apache RoccketMQ provides excellent monitoring capability. Various graphs and statistics of events, performance and system information of clients and application is evidently made available to the user.

1.下载安装Apache RocketMQ

2.配置系统变量

(1)、ROCKETMQ_HOME 本地解压路径

(2)、NAMESRV_ADDR localhost:9876

3. 启动NameServer

powerShell 管理员身份运行,否则服务会出现闪退现象!!!

若出现以下提示则服务启动成功,可进行下一步操作

启动报错提示以下错误,请检查服务解压路径中是否包含空格,存在则需迁移修改文件路径

 4. 启动Broker+Proxy

单节点则无需分开启动Broker和Proxy,原因官方文档已有说明

同样依照步骤三,在服务bin目录下启动mqbroker

5、可视化管理工具——RocketMQ Dashboard

下载zip包,本地解压使用编译工具执行!pathUrl:

6、测试中间件连通性

访问本地8080端口是否联通正常

7、在 pom.xml 文件中添加以下依赖引入Java依赖库 

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.1</version>
</dependency>

8、application.properties 配置服务端口及mq连接

server.port=8081
rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=test1
rocketmq.producer.send-message-timeout=3000
rocketmq.producer.compress-message-body-threshold=4096
rocketmq.producer.max-message-size=4194304
rocketmq.producer.retry-times-when-send-failed=3
rocketmq.producer.retry-next-server=true
rocketmq.producer.retry-times-when-send-async-failed=3

9、创建消息队列

10、消息队列生产者,部分推送代码如下:

@Autowired
private RocketMQTemplate rocketMQTemplate;
/**
 * 发送普通消息
 * convertAndSend(String destination, Object payload) 发送字符串比较方便
 */
@RequestMapping("/send")
public void send(){
    rocketMQTemplate.convertAndSend("test1","test-message");
}
/**
 * 发送同步消息
 */
@RequestMapping("/testSyncSend")
public void testSyncSend(){
    //参数一:topic   如果想添加tag,可以使用"topic:tag"的写法
    //参数二:消息内容
    SendResult sendResult = rocketMQTemplate.syncSend("test1","同步消息测试");
    System.out.println(sendResult);
}
/**
 * 发送异步消息
 */
@RequestMapping("/testASyncSend")
public void testASyncSend(){
    //参数一:topic   如果想添加tag,可以使用"topic:tag"的写法
    //参数二:消息内容
    //参数三:回调
    rocketMQTemplate.asyncSend("test1", "异步消息测试", new SendCallback() {
        @Override
        public void onSuccess(SendResult sendResult) {
            System.out.println(sendResult);
        }
        @Override
        public void onException(Throwable throwable) {
            System.out.println("消息发送异常");
            throwable.printStackTrace();
        }
    });
}
/**
 * 发送单向消息
 */
@RequestMapping("/testOneWay")
public void testOneWay(){
    for (int i = 0; i <100000000 ; i++) {
        //参数一:topic   如果想添加tag,可以使用"topic:tag"的写法
        //参数二:消息内容
        rocketMQTemplate.sendOneWay("test1","单向消息测试测试下"+i);
    }
}

11、消费队列信息消费者

@Service
@RocketMQMessageListener(consumerGroup = "test1",topic = "test1")
public class RocketMQConsumerListener implements RocketMQListener<String> {
    @Override
    public void onMessage(String s) {
        System.out.println("消费消息:"+s);
    }
}

12、postmain 测试推送数据并消费 至此完成所有

测试用例已上传至gitee pathUrl:https://gitee.com/yang-zhaopeng06022021/rocket_demo.giticon-default.png?t=M85Bhttps://gitee.com/yang-zhaopeng06022021/rocket_demo.git

猜你喜欢

转载自blog.csdn.net/qq_42697946/article/details/127654201
今日推荐