45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
import { Router } from 'express'
|
||
import redis from '../redis/index.js'
|
||
import initQueue from '../redis/initQueue.js'
|
||
const router = Router()
|
||
|
||
// 添加API路由来处理文件上传
|
||
router.post('/all', async (req, res) => {
|
||
// 立即返回响应,避免平台超时
|
||
res.status(200).json({ success: true, message: 'Received' });
|
||
// // console.log('callback',req.body)
|
||
processCallbackData(req.body).catch(error => {
|
||
console.error('处理回调数据时出错:', error);
|
||
});
|
||
})
|
||
|
||
/**
|
||
* 异步处理回调数据
|
||
*/
|
||
async function processCallbackData(body) {
|
||
let remoteTaskId, eventData
|
||
remoteTaskId = body.taskId
|
||
eventData = body.eventData
|
||
|
||
// 通过remoteTaskId查询对应的taskId
|
||
const taskId = await redis.get(`${initQueue.callback}:${remoteTaskId}`);
|
||
|
||
if (taskId) {
|
||
// 将eventData存储到redis的数据里,使用taskId作为键
|
||
const taskKey = `${initQueue.prefix}:task:${taskId}`;
|
||
await redis.hSet(taskKey, 'resultData', eventData);
|
||
|
||
// 增加值到回调结果队列列表
|
||
await redis.rPush(initQueue.callback, taskId);
|
||
await initQueue.addCallbackRQtasks(1);
|
||
console.log('taskKey:', taskKey);
|
||
console.log('数据已保存到 Redis:', eventData);
|
||
} else {
|
||
console.error('未找到对应的taskId,remoteTaskId:', remoteTaskId);
|
||
// 可以考虑将未找到的remoteTaskId记录下来,以便后续分析
|
||
await redis.set(`callback:missing:${remoteTaskId}`, JSON.stringify(body), { EX: 86400 }); // 保存24小时
|
||
}
|
||
}
|
||
|
||
export default router
|