创建延时队列
queue.file_delay_destroy
x-dead-letter-exchange: exchange.file_delay_destroy
x-message-ttl: 259200000
259200000为3天,1000为1秒
创建普通队列
queue.file_destroy
创建普通交换机
type选择fanout
交换机绑定普通队列
(图中已经绑定,红框为绑定过程)
普通队列绑定交换机
(图中已经绑定,红框为绑定过程)
普通队列消费端
延时队列时间到之后,将消息发送给queue.file_destroy,执行删除文件操作
@Component
public class FileDestroyMessageReceiver implements IMessageReceiver {
Log log = LogFactory.getLog(FileDestroyMessageReceiver.class);
@RabbitListener(queuesToDeclare = {
@Queue(name = "queue.file_destroy")
})
@RabbitHandler
@Override
public void onMessageReceived(String mqMessageString) {
JsonNode jsonNode = JsonConverter.jsonString2JsonNode(mqMessageString);
JsonNode msg = jsonNode.findValue("msg");
String filePath = msg.findValue("filePath").asText();
if (filePath.contains("/data/static/dataSharingStatic/weatherlive/colorFigure/png/610000/610000")) {
File file = new File(filePath);
if (file.exists()) {
FileHelper.deleteFile(file);
}
} else {
log.warn("有人想删除设定之外的文件");
log.warn(filePath);
}
}
}