提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
无法看到推荐
一、原因
我直接给你一个非常确定的结论,看完你就明白为什么"数据库明明查了,页面还是看不到推荐":
不是 PG 没查,也不是向量没算,而是 HTTP 请求在返回前就被 RabbitMQ 的异常打断了,Spring MVC 直接返回了 500,响应体里根本没有推荐数据。
powershell
sendUrl.test(sendUrl.java:19)
searchController.top_10(searchController.java:71)
Servlet.service() ... threw exception
AmqpConnectException: Connection refused: getsockopt
xml
HTTP 请求
├─ 解析参数 ✅
├─ PG 向量召回 ✅(已经查了)
├─ 准备返回推荐结果 ✅
├─ 发 RabbitMQ 消息 ❌(localhost:5672 不存在)
└─ Controller 抛异常 ❌ → Spring MVC 返回 500
Spring MVC 一旦在 Controller 里抛未捕获异常,已经查到的推荐结果会被直接丢弃,浏览器看到的就是"白页 / 500 / 空数据"。
二、解决方法
xml
二、为什么"忽略 RabbitMQ"没生效?
你说"忽略 RabbitMQ",但从日志看:
RabbitMQ 没有被忽略
你在 searchController.java:71 仍然调用了 sendUrl.test()
Spring AMQP 只是"后台重试",并不能阻止 convertAndSend() 抛异常
✅ "忽略 RabbitMQ" ≠ "不调用 RabbitMQ API"
❌ 只要调用 RabbitTemplate.convertAndSend(),就必须连上 MQ
页面看不到推荐,不是因为召回失败,而是因为响应被异常掐断了。
最快解决方法:
java
try {
rabbitTemplate.convertAndSend(exchange, routingKey, message);
} catch (Exception e) {
log.warn("RabbitMQ unavailable, skip sending message", e);
}
其他方法:
1.注释发送代码
2.通过条件判断mq是否存在
总结
controller存在未捕获异常会直接打断数据接收