[]]], tags: ['MQ Status'], parameters: [ new OA\Parameter( name: 'queue', in: 'query', required: false, description: '队列类型筛选(orders/products/refunds/inventory)', schema: new OA\Schema(type: 'string', enum: ['orders', 'products', 'refunds', 'inventory']) ), ], responses: [ new OA\Response( response: 200, description: '获取成功', content: new OA\JsonContent(properties: [ new OA\Property(property: 'code', type: 'integer', example: 0), new OA\Property(property: 'message', type: 'string', example: '获取成功'), new OA\Property(property: 'data', ref: '#/components/schemas/MqQueueStatus'), ]) ), new OA\Response(response: 400, description: '无效的队列类型参数', content: new OA\JsonContent(ref: '#/components/schemas/ErrorResponse')), new OA\Response(response: 401, description: '未认证', content: new OA\JsonContent(ref: '#/components/schemas/ErrorResponse')), new OA\Response(response: 403, description: '无权限', content: new OA\JsonContent(ref: '#/components/schemas/ErrorResponse')), new OA\Response(response: 500, description: 'RabbitMQ 连接异常', content: new OA\JsonContent(ref: '#/components/schemas/ErrorResponse')), ] )] #[RequestMapping(path: "status", methods: "GET")] public function status(): ResponseInterface|array { $queue_type = $this->request->input('queue'); // 校验队列类型参数 if ($queue_type !== null && !in_array($queue_type, $this->mqStatusService->getValidQueueTypes(), true)) { return $this->response->json([ 'code' => 400, 'message' => "无效的队列类型: {$queue_type},可选值: " . implode(', ', $this->mqStatusService->getValidQueueTypes()), 'data' => null, ])->withStatus(400); } try { $data = $this->mqStatusService->getStatus($queue_type); return [ 'code' => 0, 'message' => '获取成功', 'data' => $data, ]; } catch (\Throwable $e) { Log::get()->error('MQ status query failed', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); // 脱敏:mask 异常消息中的敏感信息(IP、端口、认证凭证) $safe_message = preg_replace( [ '/\/\/[^:]+:[^@]+@/', // user:pass@ → //***:***@ '/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', // IP 地址 '/:\d{4,5}(?=[\/\s\)]|$)/', // 端口号 ], ['//***:***@', '***.***.***.***', ':****'], $e->getMessage() ); return $this->response->json([ 'code' => 500, 'message' => 'RabbitMQ 连接异常: ' . $safe_message, 'data' => null, ])->withStatus(500); } } }