rabbitmq
This commit is contained in:
@@ -5,7 +5,7 @@ from typing import Optional
|
||||
from fastapi import APIRouter, Query, BackgroundTasks, HTTPException
|
||||
from fastapi.responses import StreamingResponse
|
||||
from app.models import ApiResponse, ConsumeResponse, StatusResponse
|
||||
from app.services import crawler_manager, kafka_service
|
||||
from app.services import crawler_manager, rabbitmq_service
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
router = APIRouter()
|
||||
@@ -84,29 +84,18 @@ async def stop_crawl(
|
||||
|
||||
@router.get("/consume", response_model=ConsumeResponse)
|
||||
async def consume_data(
|
||||
batch_size: int = Query(10, ge=1, le=100, description="批量大小"),
|
||||
timeout: int = Query(5000, ge=1000, le=30000, description="超时时间(毫秒)")
|
||||
batch_size: int = Query(10, ge=1, le=100, description="批量大小")
|
||||
):
|
||||
"""消费Kafka数据"""
|
||||
"""消费RabbitMQ数据"""
|
||||
try:
|
||||
messages = kafka_service.consume(batch_size, timeout)
|
||||
messages = rabbitmq_service.consume(batch_size)
|
||||
return ConsumeResponse(data=messages, count=len(messages))
|
||||
except Exception as e:
|
||||
logger.error(f"消费数据失败: {e}")
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@router.get("/consume/stream")
|
||||
async def consume_stream():
|
||||
"""SSE流式消费"""
|
||||
async def event_generator():
|
||||
consumer = kafka_service.get_consumer()
|
||||
try:
|
||||
for message in consumer:
|
||||
data = json.dumps(message.value, ensure_ascii=False)
|
||||
yield f"data: {data}\n\n"
|
||||
except Exception as e:
|
||||
logger.error(f"流式消费错误: {e}")
|
||||
finally:
|
||||
consumer.close()
|
||||
return StreamingResponse(event_generator(), media_type="text/event-stream")
|
||||
@router.get("/queue/size")
|
||||
async def get_queue_size():
|
||||
"""获取队列消息数量"""
|
||||
return {"queue_size": rabbitmq_service.get_queue_size()}
|
||||
|
||||
Reference in New Issue
Block a user