springCloud整合RabbitMQ实现消息中间件

本文介绍了RabbitMQ的基本概念,如broker、Exchange、Queue、Binding等,并详细阐述了消息从生产到消费的过程。接着讲解了SpringCloud如何与RabbitMQ整合,包括配置、生产者、消费者以及不同类型Exchange的使用方法。最后提到了Direct、Topic和Fanout三种交换机的实例应用。
摘要由CSDN通过智能技术生成

什么是RabbitMQ?

RabbitMQ是一个消息中间件,是一个实现了AMQP(高级消息队列协议)的开源消息代理软件,同类的产品还有kafka,rocketMQ,但是目前springcloud只集成了RabbitMQ和kafka,他的作用就是实现系统之间消息传递的解耦,对一些实时性要求不是很高的服务或者并发很高的系统来说是一个不错的选择,同时因为RabbitMQ是以AMQP协议实现的,所以支持多操作系统,多编程语言,先来理解一下RabbitMQ的几个概念:

broker:消息队列服务器实体,它是一个中间件应用,负责接收消息生产者的消息,然后将消息发送给消息消费者或者别的broker;

Exchange:消息交换机,这是消息第一个到达的地方,消息通过他指定的路由规则,发送给不同的消息队列;

Queue:消息队列,消息通过发送和Exchange路由后最终到达的地方,理论上消息到达Queue后就是等待消费的状态,一个消息最终会发送给一个或者多个Queue;

Binding:绑定,将Exchange和Queue按照路由规则绑定起来,也就是建立Exchange和Queue的虚拟连接;

Routing key:路由关键字,Exchange根据这个路由关键字进行投递;

Virtual Host:虚拟主机,一个Broker可能包含多个虚拟主机;

Connection:连接,代表生产者、消费者、Broker之间的物理连接;

Channel:消息通道,用于连接生产者和消费者的逻辑结构。每个连接里面可能有多个Channel,每个Channel代表一个会话;

Producer:消息生产者;

Consumer:消息消费者;

消息投递到队列的整个过程:

1、客户端连接到消息队列服务器Broker,建立一个Channel连接;

2、客户端声明一个Exchange,设置其属性;

3、客户端声明一个Queue,设置其属性;

4、客户端声明一个Routing key,binding Exchange和Queue;

5、客户端发送一条消息&#

Spring Cloud Stream 是基于 Spring Boot 和 Spring Integration 的框架,用于构建消息驱动的微服务应用程序。它提供了一种简单的方式来在应用程序中使用消息中间件,比如 RabbitMQ 和 Kafka。 下面分别介绍 Spring Cloud Stream 如何整合 RabbitMQ 和 Kafka。 ## 整合 RabbitMQ 1. 添加依赖 在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-rabbit</artifactId> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> </dependency> ``` 2. 创建消息生产者 创建一个消息生产者,可以使用 `@EnableBinding` 注解将其与 RabbitMQ 绑定: ```java @EnableBinding(MessageSource.class) public class RabbitMQProducer { @Autowired private MessageSource<String> messageSource; public void sendMessage(String message) { messageSource.output().send(MessageBuilder.withPayload(message).build()); } } ``` 3. 创建消息消费者 创建一个消息消费者,同样使用 `@EnableBinding` 注解将其与 RabbitMQ 绑定: ```java @EnableBinding(MessageSink.class) public class RabbitMQConsumer { @StreamListener(MessageSink.INPUT) public void receiveMessage(String message) { System.out.println("Received: " + message); } } ``` 4. 配置 RabbitMQ 在 `application.yml` 文件中配置 RabbitMQ: ```yaml spring: rabbitmq: host: localhost port: 5672 username: guest password: guest ``` ## 整合 Kafka 1. 添加依赖 在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-stream-binder-kafka</artifactId> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> ``` 2. 创建消息生产者 创建一个消息生产者,可以使用 `@EnableBinding` 注解将其与 Kafka 绑定: ```java @EnableBinding(MessageSource.class) public class KafkaProducer { @Autowired private MessageSource<String> messageSource; public void sendMessage(String message) { messageSource.output().send(MessageBuilder.withPayload(message).build()); } } ``` 3. 创建消息消费者 创建一个消息消费者,同样使用 `@EnableBinding` 注解将其与 Kafka 绑定: ```java @EnableBinding(MessageSink.class) public class KafkaConsumer { @StreamListener(MessageSink.INPUT) public void receiveMessage(String message) { System.out.println("Received: " + message); } } ``` 4. 配置 Kafka 在 `application.yml` 文件中配置 Kafka: ```yaml spring: kafka: bootstrap-servers: localhost:9092 consumer: group-id: myGroup auto-offset-reset: earliest producer: retries: 0 ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值