Spring Boot RocketMq的食用方法

这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战

前言

之前我们讲了rocketmq的概念,让我们书接上文,这次来讲一下RocketMQ的具体使用方法,目前公司主推的MQ就是RocketMQ,前前后后看了一点点源码,用了一个月,讲一下基础部分。可以满足大家的日常业务需求。

image.png

回顾

RocketMQ是一个高性能支持分布式的搭建的一款消息队列,他的吞吐量非常高,是阿里巴巴开源的一款中间件,在我上大学时,当时同学做毕设有一个问题:我用的python写的后端服务器如何跟你的java进行通讯呢?当时由于技术力过低最后放弃了异构,但是RocketMQ就可以做到通讯的一个作用,完美的解决上述问题,当然MQ有许多的应用场景,上述只是其中一种,它还可以用来做削峰填谷等抗住并发压力,给服务器带来高性能回报。

前提

在开始使用MQ之前我们需要导入MQ的包,这里由于我是公司的项目,所以我采用的包是官方给出的starter自动装配包,配合SpringBoot可以快速搭建项目,实现敏捷开发。当然你也可以选择导入原生MQ包,详细请读者去Maven中央仓库自行获取。

<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>
复制代码

consumer

引入Mq jar包后,点击jar包可以发现他的文件中有一个这个注解

image.png

通过这个注解我们可以实现简单地消费者监听,配合topic实现连接MQ Broker来获取信息。

@Component
@RocketMQMessageListener(  //重点注解
        consumerGroup = "wopen_gateway_consumer_group",
        topic = "${stong.wopen.rocketmq.topic.gateway}") // 采用yml来注入值
@Slf4j
public class GatewayConsumer implements RocketMQListener<DeviceVo>{

    @Autowired
    private GatewayService service;

    @Autowired
    private PushMessageService pushMessageService;

    @Override
    public void onMessage(DeviceVo gatewayVo) {
    
    //业务逻辑处理
    }

}
复制代码

通过yml的形式来注入topic可以实现不修改代码情况下更换topic。

image.png

producer

生产者基于MQ的官方start包更便于开发者使用,这里演示同步方法的调用,异步与单向发送是一样的,只是返回结果不同而已。

@Autowired
private RocketMQTemplate mqTemplate;  // 注入Mqtemplate

@Value("${wftp.rocketmq.topic.aerator}")  // 注入需要发送的Topic 一样与上面消费者采用可配置topic
private String aeratorTopic;  
复制代码

就一句话 ,比之前的原生发送简单了一万倍,其他的异步与同步也是一样得,异步要注意一下有个回调需要你自己处理一下。

SendResult sendResult = mqTemplate.syncSend(aeratorTopic, 业务数据);
复制代码

猜你喜欢

转载自juejin.im/post/7035991380212056071