SpingBoot如何接入rocketMq的例子

一,RocketMq介绍和基本概念

RocketMQ是由阿里巴巴开发并开源的一款分布式消息中间件,旨在提供高可用、高可靠的消息传递服务。它广泛应用于大规模分布式系统中,尤其在电商领域表现卓越,是一款纯Java实现的分布式消息中间件,以其强大的功能和灵活的扩展性,在分布式系统中发挥着重要作用;

1,基本概念与架构

RocketMQ的主要组成部分包括Producer、Consumer、Broker和NameServer:
(1)Producer:负责发送消息的组件。
(2)Consumer:负责接收消息的组件。
(3)Broker:存储和转发消息的组件。
(4)NameServer:维护Broker注册信息的命名服务,提供路由信息给Producer和Consumer

2,功能特性

RocketMQ支持多种类型的消息,包括但不限于:
(1)普通消息:标准消息类型。
(2)事务消息:支持分布式事务,类似X/Open XA协议。
(3)顺序消息:按顺序发送和消费消息。
(4)批量消息:一次性发送多个消息。
(5)定时消息:消息在指定时间后才被消费。
(6)延迟消息:消息在设定的时间后才开始处理。
(7)消息回溯:能够追溯历史消息。
此外,RocketMQ还具备以下高级功能:
(8)死信队列:用于处理无法正常消费的消息。
(9)消息重试机制:确保消息能够成功送达。
(10)刷盘机制:保证数据的持久化存储

3,特点与优势

RocketMQ具有低延迟、高性能、高可靠性、万亿级容量和灵活的可扩展性等特点。其架构设计简洁高效,能够应对高并发场景。
 

二,RocketMQ的下载和安装

1,RocketMQ的官网下载 https://rocketmq.apache.org/download

2,以Linux虚拟机为例安装,上传服务器某目录并解压:
tar -xzvf rocketmq-5.3.0.tar.gz 
或者
unzip rocketmq-5.3.0.zip 

3,配置环境变量
将RocketMQ的bin目录添加到系统的PATH环境变量中,确保可通过命令行启动RocketMQ的各种服务( 注意事先安装好JavaJDK,rocketMQ运行需要JDK)
export ROCKETMQ_HOME=/path/to/rocketmq
export PATH=$PATH:$ROCKETMQ_HOME/bin
或者
export PATH=$PATH:/path/to/rocketmq/bin

4,启动NameServer:
# 假设当前就在rocketmq的bin目录下
nohup sh mqnamesrv &

5,启动Broker:
# 假设当前就在rocketmq的bin目录下
nohup sh mqbroker -n localhost:9876 autoCreateTopicEnable=true &

6,集群搭建(可选项)
参考官方提供的三种集群模式:2主2从异步通信方式、同步复制方式等,
根据具体需求调整配置文件,并确保所有节点之间的网络连接正常
 

三,SpingBoot如何接入rocketMq的例子

Spring Boot接入RocketMQ的基本步骤如下:

1,添加依赖:在pom.xml中添加 RocketMQ 的 Spring Boot Starter 依赖。

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

	<!-- 上面是rocketmq的依赖,下面是SpringBoot的依赖-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
		<version>3.2.8</version>
	</dependency>
</dependencies>

2,配置RocketMQ:在 application.properties 或 application.yml 中配置RocketMQ的基本信息。

# application.properties
spring.rocketmq.name-server=127.0.0.1:9876
spring.rocketmq.producer.group=my-group

3,生产者,发送消息:使用 @RocketMQMessageSender 注解的Bean发送消息。

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Service;
 
@Service
public class MessageService {
 
    @Autowired
    private RocketMQTemplate rocketMQTemplate;
 
    public void sendMessage(String topic, String tag, String message) {
        rocketMQTemplate.convertAndSend(topic + ":" + tag, 
			MessageBuilder.withPayload(message).build());
    }
}

4,消费者,接收消息:使用 @RocketMQMessageListener 注解的Bean来监听消息。

import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
 
@Component
@RocketMQMessageListener(topic = "my-topic", consumerGroup = "my-consumer_group")
public class ConsumerListener implements RocketMQListener<String> {
 
    @Override
    public void onMessage(String message) {
        // 处理接收到的消息
        System.out.println("Received message: " + message);
    }
}

5,简单的SpringBoot应用程序启动类。

@SpringBootApplication
public class MyApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

欢迎拍砖讨论...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值