RocketMQ 架构图展示:
RocketMQ 有四个部分组成分别为:NameServer,Broker,Producer 生产者,Consumer 消费者;以及各自的作用分别为:发现、发、存、收,其主要目的是为了保证高可用。
以下是一个Spring Boot集成RocketMQ的项目实战代码示例,其中包括关键技术的详细说明:
1. 首先,你需要将RocketMQ的依赖添加到你的Spring Boot项目的pom.xml文件中:
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
2. 在application.properties或application.yml文件中添加RocketMQ的配置:
rocketmq.name-server=127.0.0.1:9876
rocketmq.producer.group=your-group-name
rocketmq.producer.send-message-timeout=3000
rocketmq.consumer.group=your-group-name
rocketmq.consumer.topic=your-topic-name
rocketmq.consumer.tags=* // 支持消息过滤,你可以指定特定的标签
3. 创建一个消息生产者(Producer):
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MessageProducer {
@Autowired
private RocketMQTemplate rocketMQTemplate;
public void sendMessage(String message) {
rocketMQTemplate.convertAndSend("your-topic-name", message);
}
}
4. 创建一个消息消费者(Consumer):
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Component;
@Component
@RocketMQMessageListener(topic = "your-topic-name", consumerGroup = "your-group-name")
public class MessageConsumer implements RocketMQListener<String> {
@Override
public void onMessage(String message) {
System.out.println("Received message: " + message);
}
}
5. 运行应用程序并发送消息:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import javax.annotation.PostConstruct;
@SpringBootApplication
public class RocketMQApplication {
@Autowired
private MessageProducer messageProducer;
public static void main(String[] args) {
SpringApplication.run(RocketMQApplication.class, args);
}
@PostConstruct
public void init() {
messageProducer.sendMessage("Hello, RocketMQ!");
}
}
关键技术说明:
- NameServer是RocketMQ的路由服务,它用于注册和发现Broker的地址信息。配置文件中的
rocketmq.name-server
参数指定了NameServer的地址。
- Broker是RocketMQ的消息存储和传输服务,它接收来自Producer的消息并将其保存在合适的topic和queue中。Broker地址由NameServer提供和管理。
- Producer是消息的生产者,负责将消息发送到指定的topic。在示例代码中,我们使用了
RocketMQTemplate
类来发送消息。
- Consumer是消息的消费者,负责从指定topic接收并处理消息。在示例代码中,我们使用了
@RocketMQMessageListener
注解来监听指定topic,并实现RocketMQListener
接口来处理收到的消息。