SpringCloudStream 3.x rabbit 使用
Spring Cloud Stream 3.x 是基于Spring Boot 2.x构建的,它提供了一个抽象层,可以很容易地为消息传递和事件驱动的微服务架构集成RabbitMQ或其他消息传递中间件。
以下是一个使用Spring Cloud Stream 3.x与RabbitMQ的简单示例:
- 添加依赖到你的
pom.xml
:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2021.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 配置application.yml:
spring:
cloud:
stream:
binders:
defaultRabbit:
type: rabbit
environment:
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
bindings:
input:
destination: my-input-topic
binder: defaultRabbit
group: my-consumer-group
output:
destination: my-output-topic
binder: defaultRabbit
- 创建接收消息的服务类:
@EnableBinding(Sink.class)
public class Receiver {
@StreamListener(Sink.INPUT)
public void receive(String payload) {
System.out.println("Received: " + payload);
}
}
- 创建发送消息的服务类:
@EnableBinding(Source.class)
public class Sender {
@Autowired
private MessageChannel output;
public void send(String message) {
this.output.send(MessageBuilder.withPayload(message).build());
}
}
在这个例子中,我们定义了一个输入通道input
来监听名为my-input-topic
的RabbitMQ主题,并定义了一个输出通道output
用于向名为my-output-topic
的主题发送消息。通过@StreamListener
注解,我们可以监听输入通道上的消息,并在接收到消息时执行相应的方法。通过MessageChannel
接口,我们可以向输出通道发送消息。
确保RabbitMQ服务器正在运行并且你的应用程序配置正确,你就可以开始发送和接收消息了。
评论已关闭