Java随笔 | SpringBoot项目中集成使用RocketMQ(消息队列)


第一步:引入依赖

pom.xml文件的<dependencies>…</dependencies>标签中引入依赖:

<!--消息队列所需依赖-->
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-spring-boot-starter</artifactId>
    <version>2.2.2</version>
</dependency>

第二步:在配置文件中进行配置

application.yml文件中配置消息队列:

# application.yml
# 配置消息队列
rocketmq:
  name-server: 192.168.xxx.xxx:9876
  producer:
    group: book-mq-group  # 消息生产者集群
  consumer:
    group: book-mq-consumer-group  # 消息消费者集群

第三步:编写代码实现消息收发

3.1 消息收发 - 同步发送

以下消息发送的示例代码在Service层。

// 在Service层中需要使用消息队列的地方发送同步消息
@Service
public class TestServiceImpl{
	@Resource
    private RocketMQTemplate mqTemplate;
    
	// 此方法中发送消息
    private void sendTest(){
        Log msgBody = new Log();// 消息体,可以是自定义的类型
        SendResult sendResult = mqTemplate.syncSend("log-topic", msgBody);// 参数为tag与消息体
        System.out.println(sendResult);// 输出发送消息的返回结果
    }
}

消息接收的代码,创建Listener类,在其中接收消息。

// 新建Listener类测试消息接收
@Component// 将本类对象注入ioc容器
@RocketMQMessageListener(topic = "log-topic", consumerGroup = "log-test")
public class TestListener implements RocketMQListener<Log> {
    @Override
    public void onMessage(Log log) {
		// 对收到的log对象进行处理
    }
}

3.2 消息收发 - 延迟消息

以下消息发送的示例代码在Service层。

消息接收的用法与同步发送一致(上文代码)。

// 在Service层中需要使用消息队列的地方发送延迟消息
@Service
public class TestServiceImpl{
	@Resource
    private RocketMQTemplate mqTemplate;
    
	// 此方法中发送消息
    private void sendTest(){
        Log msgBody = new Log();// 消息体,可以是自定义的类型
        Message<Log> message = MessageBuilder.withPayload(msgBody).build();// 创建消息对象
        SendResult sendResult = mqTemplate.syncSend("log-topic", msgBody, 3000, 3);// 见后方说明
        System.out.println(sendResult);// 输出发送消息的返回结果
    }
}

说明:延时消息mqTemplate.syncSend(string, message, timeout, delayLevel)的4个参数

  • string topic名称 与接收时对应
  • message 消息对象 消息体在其中的载荷中
  • timeout 超时时长(毫秒)
  • delayLevel 延迟级别

延迟级别:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

分别对应时长:0s 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序猿林仔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值