依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
<version>3.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
<version>3.0.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.16.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
订单超时关闭
配置生产者
delay:
send_cargo_result_topic:
topic: send_cargo_result_topic
group: send_cargo_result_group
spring:
cloud:
stream:
binders:
rabbit:
environment:
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
password: guest
bindings:
test_out:
destination: ${delay.send_cargo_result_topic.topic}
group: ${delay.send_cargo_result_topic.group}
content-type: application/json
producer:
required-groups: # 发送消息创建路由绑定
- ${delay.send_cargo_result_topic.group}
default-binder: rabbit
rabbit:
bindings:
test_out:
producer:
ttl: 50000 # 消息50s后过期进入延迟队列
auto-bind-dlq: true
配置下消费者
delay:
send_cargo_result_topic:
topic: send_cargo_result_topic
group: send_cargo_result_group
spring:
cloud:
stream:
bindings:
test_dlq_in:
destination: ${delay.send_cargo_result_topic.topic}.${delay.send_cargo_result_topic.group}
group: dlq
消费死性队列
配置管道
将死性队列的消息转发到close消费,实现订单延迟关闭
@Service
public class MqSer {
@Resource
private MQConfig mqConfig;
@StreamListener("test_dlq_in")
@SendTo("qx_close_out")
public String dlqRouter(String close) {
System.out.println("close");
return close;
}
}