SpringBoot整合RocketMQ

1.RocketMQ的下载与配置

到官网选择想要的版本下载即可,Index of /release_notes

下载速度会比较慢,这里提供目前最新版本4.9.3的压缩包,rocketmq-all-4.9.3-bin-release.zip - 蓝奏云


压缩包选择路径解压即可

配置一个环境变量:ROCKETMQ_HOME,变量值为RocketMQ的安装路径,并把这个变量配置到path中,类似于JAVA_HOME

建议配置环境变量:NAMESRV_ADDR,变量值为127.0.0.1:9876。不配的话启动mqbroker之前需要cmd进入RocketMQ安装目录下的bin目录set一下这个变量

在bin目录下先后启动mqnamesrv和mqbroker

 

启动成功会分别有如下显示


 2.整合

pom.xml中添加依赖,如下所示

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <scope>compile</scope>
        </dependency>

配置application.yaml,具体如下

server:
  port: 80

rocketmq:
  name-server: localhost:9876
  producer:
    group: group_1

编写controller层

package me.xiaomaju.controller;

import me.xiaomaju.service.RocketMQService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/msg")
public class RockerMQController {

    @Autowired
    private RocketMQService rocketMQService;

    @RequestMapping("{id}")
    public void sendMessage(@PathVariable  String id){
        rocketMQService.sendMessage(id);
    }

}

编写service层,消息异步发送的逻辑

package me.xiaomaju.service.impl;

import me.xiaomaju.service.RocketMQService;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class RocketMQImpl implements RocketMQService {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    @Override
    public void sendMessage(String id) {
        System.out.println("已进入处理队列,id:" + id);
        rocketMQTemplate.asyncSend("id_user", id, new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("消息已成功发送:" + sendResult);
            }

            @Override
            public void onException(Throwable throwable) {
                System.out.println("消息发送异常,发送失败");
            }
        });
    }
}

编写listener层,消息消费的逻辑

package me.xiaomaju.listener;

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;

@Component
@RocketMQMessageListener(topic = "id_user",consumerGroup = "group_1")
public class MsgListenter implements RocketMQListener<String> {

    @Override
    public void onMessage(String id) {
        System.out.println("消息已消费,id:"+id);
    }
}

此时服务正常启动,浏览器输入 http://localhost/msg/xmj0001 回车

控制台打印如下

完毕

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值