springboot操作rocketMq

rocketMq介绍

消息队列作为高并发系统的核心组件之一,能够帮助业务系统解构提升开发效率和系统稳定性。主要具有以下优势:

削峰填谷(主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题)
系统解耦(解决不同重要程度、不同能力级别系统之间依赖导致一死全死)
提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关系统)
蓄流压测(线上有些链路不好压测,可以通过堆积一定量消息再放开来压测)
目前主流的MQ主要是Rocketmq、kafka、Rabbitmq,Rocketmq相比于Rabbitmq、kafka具有主要优势特性有:
• 支持事务型消息(消息发送和DB操作保持两方的最终一致性,rabbitmq和kafka不支持)
• 支持结合rocketmq的多个系统之间数据最终一致性(多方事务,二方事务是前提)
• 支持18个级别的延迟消息(rabbitmq和kafka不支持)
• 支持指定次数和时间间隔的失败消息重发(kafka不支持,rabbitmq需要手动确认)
• 支持consumer端tag过滤,减少不必要的网络传输(rabbitmq和kafka不支持)
• 支持重复消费(rabbitmq不支持,kafka支持)

Rocketmq、kafka、Rabbitmq的详细对比,请参照下表格:
在这里插入图片描述

rocketMq下载安装

由于一般公司都是由于运维会安装rocketMq,这里为了学习方便安装的windows的

1.下载

rocketMq官网: http://rocketmq.apache.org/
进入官网安装步骤下载后即可,得到的zip包,在选择合适位置解压即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.安装

  1. 配置环境变量
    在下载好后,寻找合适位置解压后,需要在自己系统的环境变量中配置
    ROCKETMQ_HOME 配置自己解压位置的,比如我的 F:\rocketmq-all-4.7.0-bin-release
  2. 启动rocketmq
    在cmd窗口分别执行bin目录下的mqnamesrv.cmd和mqbroker.cmd,执行完之后会弹出新的窗口,都不要关闭,如图:

mqnamesrv启动命令:start mqnamesrv.cmd
在这里插入图片描述
mqbroker启动命令:start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
在这里插入图片描述
注意:如果输入命令后提示 Please set the ROCKETMQ_HOME variable in your environment!
那么建议
修改 runbroker.cmd

set "JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%"

改为

set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%""

rocketMq运行

springboot整合

创建一个springboot的项目,这里就不过多创建了

1. 导入依赖

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.3</version>
        </dependency>
        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.4</version>
        </dependency>

2. 配置配置文件

rocketmq:
  # 接收消息
  name-server: 127.0.0.1:9876
  producer:
    group: my-group
    # 其他的配置 发送超时时长
    send-message-timeout: 3000
    # 消息 Body 超过多大开始压缩
    compress-message-body-threshold: 4096
    # 限制的消息大小
    max-message-size: 4194304
    # 开启内部消息重试
    retry-next-server: true
    # 失败重试次数
    retry-times-when-send-async-failed: 2

3. 创建生成者

@RunWith(SpringRunner.class)
@SpringBootTest
public class RocketMqTest {

    @Resource
    private RocketMQTemplate rocketMQTemplate;

    @Test
    public void testRocketMq1() {

        String name = "aaa";
        rocketMQTemplate.convertAndSend("test-topic-1", name);
        rocketMQTemplate.send("test-topic-2", MessageBuilder.withPayload(new User(1L,"ace",24)).build());

        System.err.println("发送成功...");

    }
}

4. 创建消费者

@Service
//消息接收者的 主题和分组名称方便接收对应的消息
@RocketMQMessageListener(topic = "test-topic-2", consumerGroup = "my-consumer_test-topic-2")
public class OrderPaidEventConsumer implements RocketMQListener<User> {

    @Override
    public void onMessage(User message) {
        System.out.print("------- OrderPaidEventConsumer received:"+ JSON.toJSONString(message));
    }

}

注:使用的实体类

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    public User(){}

    public User(Long id, String name, int age) {
        this.id = id;
        this.age = age;
        this.name = name;
    }
}
要在Spring Boot项目中集成RocketMQ,你可以按照以下步骤进行操作: 1. 确保你的项目中已经添加了RocketMQ的依赖项。可以在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 2. 创建一个用于启动应用的类,命名为RocketmqApplication(根据你的项目命名规范可以自行修改)。在这个类上添加@SpringBootApplication注解,并且使用@ComponentScan注解将RocketMQ相关的包的路径添加进去。如下所示: ```java package com.springboot.rocketmq; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(basePackages = {"com.springboot.rocketmq"}) public class RocketmqApplication { public static void main(String[] args) { SpringApplication.run(RocketmqApplication.class, args); } } ``` 3. 在应用程序中创建一个用于发送和接收消息的RocketMQ的生产者和消费者类。你可以根据自己的需求编写这些类,并将其放在`com.springboot.rocketmq`包下。 4. 在配置文件(application.properties或application.yml)中配置RocketMQ的相关属性,包括RocketMQ的服务器地址,生产者和消费者的组名等。例如: ```yaml #RocketMQ rocketmq.name-server=127.0.0.1:9876 rocketmq.producer.group=myProducerGroup rocketmq.consumer.group=myConsumerGroup ``` 5. 编写生产者和消费者的逻辑代码。例如,你可以使用RocketMQ的Template来发送消息,使用@RocketMQMessageListener注解来监听消息。具体的代码实现可以根据你的实际需求进行编写。 以上就是在Spring Boot项目中集成RocketMQ的基本步骤。通过添加RocketMQ的依赖项,配置相关属性,以及编写生产者和消费者的逻辑代码,你就可以在Spring Boot应用程序中集成RocketMQ,并实现消息的发送和接收。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Spring Boot整合Rocketmq](https://blog.csdn.net/qq_18603599/article/details/81172866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [SpringBoot整合websocket实现数据实时推送](https://download.csdn.net/download/qq_60067835/88269775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值