SpringMVC与异常

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

无法看到推荐


一、原因

我直接给你一个非常确定的结论,看完你就明白为什么"数据库明明查了,页面还是看不到推荐":

不是 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存在未捕获异常会直接打断数据接收

相关推荐
月落归舟21 天前
谈谈SpringMVC底层原理
后端·springmvc
AI人工智能+电脑小能手1 个月前
【大白话说Java面试题 第161题】【06_Spring篇】第21题: SpringMVC工作流程
java·springmvc·工作流程·dispatcherservlet·处理器映射
装不满的克莱因瓶2 个月前
Servlet 到 Spring MVC 架构演进:Java Web 开发二十年技术变迁史
java·spring·servlet·架构·springmvc
lee_curry2 个月前
tomcat+springmvc+spring源码流通过程
java·spring·tomcat·springmvc
jasnet_u3 个月前
SpringMVC 请求处理深度解析:从 DispatcherServlet 到视图渲染
spring·springmvc·springboot
Cyan_RA93 个月前
SpringMVC 数据格式化处理 详解
java·开发语言·spring·mvc·ssm·springmvc·数据格式化
一只大袋鼠3 个月前
SpringMVC 框架中的拦截器
java·springmvc·javaweb·拦截器
一只大袋鼠3 个月前
SpringMVC全局异常处理
java·开发语言·springmvc·javaweb
一只大袋鼠3 个月前
JavaWeb四种文件上传方式(下篇)
java·开发语言·springmvc·javaweb