使用Spring Boot集成RocketMQ进行消息发送的示例

在现代微服务架构中,消息队列是实现异步通信、解耦和提高系统可靠性的重要组件之一。Apache RocketMQ是一款高性能、高可靠、分布式的消息中间件,适合处理大规模的消息传输需求。本文将介绍如何在Spring Boot项目中集成RocketMQ,并实现不同类型的消息发送。

项目配置

首先,在Spring Boot项目中添加RocketMQ的依赖。可以在pom.xml中添加以下依赖:

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

然后,在application.yml中配置RocketMQ的相关属性,例如NameServer地址:

rocketmq:
  name-server: 填你的服务器ip跟端口号
  producer:
    group: my-group

代码实现

在本文的示例中,我们将实现以下几种类型的消息发送:

  1. 同步消息
  2. 异步消息
  3. 单向消息
  4. 延迟消息
  5. 顺序消息

创建一个Spring Boot测试类来演示这些消息的发送:

package com.takumilove;

import com.alibaba.fastjson.JSON;
import com.takumilove.domain.Order;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

@SpringBootTest
class BRocketmqBootPApplicationTests {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    @Test
    void contextLoads() {
        // 1. 同步消息
        rocketMQTemplate.syncSend("bootTestTopic", "我是boot的一个消息");

        // 2. 异步消息
        rocketMQTemplate.asyncSend("bootAsyncTestTopic", "我是boot的一个异步消息", new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println("发送成功");
            }

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

        // 3. 单向消息
        rocketMQTemplate.sendOneWay("bootOnewayTopic", "单向消息");

        // 4. 延迟消息
        Message<String> msg = MessageBuilder.withPayload("延迟消息").build();
        rocketMQTemplate.syncSend("bootMsTopic", msg, 3000, 3);

        // 5. 顺序消息
        List<Order> orderList = Arrays.asList(
                new Order(1, 111, 59D, new Date(), "下订单"),
                new Order(2, 111, 59D, new Date(), "物流"),
                new Order(3, 111, 59D, new Date(), "签收"),
                new Order(4, 112, 89D, new Date(), "下订单"),
                new Order(5, 112, 89D, new Date(), "物流"),
                new Order(6, 112, 89D, new Date(), "拒收"));
        orderList.forEach(order -> {
            rocketMQTemplate.syncSendOrderly("bootOrderlyTopic", JSON.toJSONString(order),
                    String.valueOf(order.getOrderNumber()));
        });
    }
}

详细说明

  1. 同步消息:使用syncSend方法发送消息,发送成功后会返回一个SendResult对象。

  2. 异步消息:使用asyncSend方法发送消息,并通过回调函数处理发送结果。onSuccess方法在发送成功时被调用,onException方法在发送失败时被调用。

  3. 单向消息:使用sendOneWay方法发送单向消息,发送后不等待服务器回应。

  4. 延迟消息:使用syncSend方法并设置消息的延迟级别,消息会在指定延迟时间后被消费。

  5. 顺序消息:通过syncSendOrderly方法发送顺序消息,所有相同订单号的消息会被发送到同一个队列中,从而保证顺序性。

通过以上配置和代码示例,我们可以在Spring Boot项目中轻松集成RocketMQ,并实现不同类型的消息发送。这种集成方式可以帮助我们构建高性能、高可靠的分布式系统。

  • 22
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,以下是一个简单的 Spring Boot 集成 RocketMQ示例代码: 首先,需要在 pom.xml 文件中添加 RocketMQ 的依赖: ```xml <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> ``` 然后,在 application.properties 文件中添加 RocketMQ 的配置项: ``` rocketmq.name-server=127.0.0.1:9876 rocketmq.producer.group=my-group rocketmq.consumer.group=my-group ``` 接着,定义一个消息发送者和一个消息接收者: ```java @Service public class MessageProducer { @Autowired private RocketMQTemplate rocketMQTemplate; public void send(String message) { rocketMQTemplate.convertAndSend("my-topic", message); } } @Component @RocketMQMessageListener(topic = "my-topic", consumerGroup = "my-group") public class MessageConsumer implements RocketMQListener<String> { @Override public void onMessage(String message) { System.out.println("Received message: " + message); } } ``` 最后,在启动类上添加 `@EnableRocketMQ` 注解: ```java @SpringBootApplication @EnableRocketMQ public class RocketMQApplication { public static void main(String[] args) { SpringApplication.run(RocketMQApplication.class, args); } } ``` 以上就是一个简单的 Spring Boot 集成 RocketMQ示例代码。需要注意的是,这只是一个最基本的示例,实际应用中还需要考虑更多的细节问题,如消息的序列化、消息的重试、消息的顺序性等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值