springboot 整合 腾讯云RocketMq版消息队列服务

前言

        承接上一篇 Springboot 整合 阿里云消息队列RabbitMQ版服务,本篇实现对于 RocketMq版消息队列服务,至于为什么不继续使用阿里云服务,懂的都懂,rocketMq版消息队列在阿里云需要付费购买,而腾讯云 rocketMq版消息队列完全免费(看过上一篇自然明白),这次我想说腾讯云真香。

准备工作

  1. 首先的先注册腾讯云账户,并进入首页->搜索->并选择点击。

        2.  点击立即使用进入控制台

 

         3.注意选择左侧rocketMq的菜单栏,不要选到其他队列了

        4. 在右侧创建集群

        5.根据官方教程 进入集群进行相关配置创建

        注:所有配置都创建完成后,不难发现,接入点只有vpc接入点,公网接入点没有,看过上篇的小伙伴都应该知道,如果要进行本地测试,必须使用公网接入点才可以,我们只需要向腾讯云提交申请工单,就会免费为你开通啦(相比阿里云还需要额外收费,所以腾讯云才是真香啊)

1.

2.

3.

 

4.填写相关队列信息并提交(相关信息可在控制台查看)

5.提交成功后,会有相关腾讯客服打电话过来进行确认,所以务必把手机号填写正确(目前腾讯云队列只能用于测试环境,不能用于生产)

6.申请通过后,可进入集群基本信息也进行查看接入点

编码

        1.创建一个 springboot项目 rocketmq-tencentcloud

        2. 引入rocketmq依赖到 pom.xml文件中

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

         3. 配置application.yml文件

server:
  port: 8081
rocketmq:
  name-server:  #公网接入点
  producer:
    group: #分组
    access-key: #密匙key
    secret-key: #角色名
  consumer:
    access-key: #密匙key
    secret-key: #角色名

  # 用户自定义配置
  namespace: rocketmq-jm8bmmrpooeb|xiongfeng
  producer1:
    topic: #队列主题名
  consumer1:
    group: #分组
    topic: #队列主题名
    subExpression: TAG1  #自定义tag

        4.创建service类以及实现类

public interface RocketMqService {

    String syncSend(String message, String tags);

}


@Slf4j
@Service
public class RocketMqServiceImpl implements RocketMqService{

    // 需要使用topic全称,所以进行topic名称的拼接,也可以自己设置  格式:namespace全称%topic名称
    @Value("${rocketmq.namespace}%${rocketmq.producer1.topic}")
    private String topic;

    //注入rocketmq模板对象
    @Autowired
    private RocketMQTemplate rocketMQTemplate;


    @Override
    public String syncSend(String message, String tags) {
        //获取队列主题名称
        String destination  = StringUtils.isBlank(tags)? topic: topic + ":" +tags;
        try{
            //发送同步消息
            rocketMQTemplate.syncSend(destination, MessageBuilder.withPayload(message)
                    .setHeader(MessageConst.PROPERTY_KEYS, "miss-test").build());
        }catch (Exception e){
            log.error("发送消息失败", e);
        }
        return "消息发送成功";
    }
}

         5. 创建消费者监听器 实现 RocketMQListener

@Service
@RocketMQMessageListener(
        consumerGroup = "${rocketmq.namespace}%${rocketmq.consumer1.group}",  // 消费组,格式:namespace全称%group名称
        topic = "${rocketmq.namespace}%${rocketmq.consumer1.topic}",// 需要使用topic全称,所以进行topic名称的拼接,也可以自己设置  格式:namespace全称%topic名称
        selectorExpression = "${rocketmq.consumer1.subExpression}" // 订阅表达式, 不配置表示订阅所有消息
)
public class MessageConsumer implements RocketMQListener<String> {
    
    @Override
    public void onMessage(String s) {

        System.out.println("开始消费消息:" + s);
    }
}

         6.创建controller 类

@RestController
@RequestMapping("rocketMq")
public class RocketMqController {

    @Autowired
    private RocketMqService rocketMqService;

    /**
     * 发送消息
     * @param message 消息体
     * @param tags 消息标签
     * @return
     */
    @GetMapping("/sendMessage")
    public String sendMessage(String message, String tags){

        return rocketMqService.syncSend(message, tags);
    }
}

        7.代码结构

 

测试

        1.成功启动项目

        2.发送消息 并返回发送成功

         3.查看编辑器控制台-并没有答应消费日志

        4.进入腾讯云控制台查看消息- tag为我们请求是设置的 producer

 

        5.点击查看消息轨迹--》消息被存储但并没有被消费

         6.是否还记得我们在 yml文件中 配置的 消费者 tag 为 TAG1

         7.再次发送消息  tag输入  TAG1

         8.再次查看编辑器控制台-成功打印消费日志

        9.再次进入腾讯云控制台查看-消息成功被推送

 

 后语

获取源码

不要急于求成,目光于眼前,慢慢沉淀,当机会再次来临,才能稳稳的抓住。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RemainderTime

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值