Spring Cloud Stream
什么是Spring Cloud Stream
Spring Cloud Stream是一个用于构建基于消息的微服务应用框架。它基于SpringBoot来创建具有生产级别的单机Spring应用,并且使用Spring Intergration与Broker进行连接。
Spring Cloud Stream 内部有两个概念:Binder 和 Binding。
- Binder: 跟外部消息中间件集成的组件,用来创建 Binding,各消息中间件都有自己的 Binder 实现。
比如 Kafka 的实现 KafkaMessageChannelBinder,RabbitMQ 的实现 RabbitMessageChannelBinder 以及 RocketMQ 的实现 RocketMQMessageChannelBinder。
- Binding: 包括 Input Binding(相当于消费者) 和 Output Binding(相当于生产者)。
在Spring Cloud Stream中,消息通信方式遵循发布-订阅模式。
使用String Cloud Stream集成RabbitMQ
- 引入依赖,引入的spring-cloud版本为2022.0.0
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
</dependencies>- 修改应用配置文件,application.yml
yaml
server:
port: 7106
spring:
application:
name: spring-cloud-stream-study
rabbitmq:
addresses: 139.159.235.28:5672
username: root
password: 512745183
cloud:
stream:
bindings:
recMessage-in-0:
destination: stream-exchange
function:
definition: recMessage- 创建生产者
java
@Component
public class MessageSender {
@Autowired
private StreamBridge streamBridge;
@Bean
public void send() {
UUID uuid = UUID.randomUUID();
streamBridge.send("stream-exchange", "hello world" + uuid);
}
}- 创建消费者
java
@Component
public class MessageListener {
@Bean
public Consumer<String> recMessage() {
return str -> System.out.println(str);
}
}- 启动应用后,应用会向RabbitMQ注册Exchange和Queue,并进行绑定。调用MessageSender.send()方法,将会向RabbitMQ发送消息,消费者将会接收到消息。