java - 如何在 Spring 应用程序中处理 SockJsMessageDeliveryException?
问题描述
在我的应用程序日志中,我得到:
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.socket.sockjs.SockJsException: Uncaught failure in SockJS request, uri=****; nested exception is org.springframework.web.socket.sockjs.SockJsMessageDeliveryException: Failed to deliver message(s)
我尝试创建自定义处理程序:
@MessageExceptionHandler({SockJsMessageDeliveryException.class})
public void handle(SockJsMessageDeliveryException e) {
log.error("Handled websocket exception: " + e.getClass().getSimpleName());
}
但它没有捕捉到这个异常。我也尝试覆盖 SimpMessagingTemplate
public class SilentErrorSimpMessagingTemplate extends SimpMessagingTemplate {
private final SimpMessagingTemplate simpMessagingTemplate;
SilentErrorSimpMessagingTemplate(SimpMessagingTemplate simpMessagingTemplate) {
super(simpMessagingTemplate.getMessageChannel());
simpMessagingTemplate.setMessageConverter(new MappingJackson2MessageConverter());
this.simpMessagingTemplate = simpMessagingTemplate;
}
@Override
public void convertAndSendToUser(@NotNull String user, @NotNull String destination, @NotNull Object payload) throws MessagingException {
try {
simpMessagingTemplate.convertAndSendToUser(user, destination, payload);
} catch (SockJsMessageDeliveryException e) {
log.error("Socket send error: " + e.getClass().getSimpleName());
}
}
}
我想在关闭 websocket 会话以不触发我的监控警报时处理此错误。有任何想法吗?
解决方案
推荐阅读
- python - 在字典中创建字典以将其转换为 Json 数据
- c++ - C生成的asm调用指向错误的偏移量
- azure - 从部署作业中检索发布信息
- android - Android,在样式中设置主题不起作用
- javascript - 将日期名称转换为缩写
- dns - DNS查找在Ubuntu 20.04上的wireguard服务器(不是客户端)上不起作用
- firebase - firebase 电话授权赋予管理员角色
- excel - 将列中的文本分为两列(文本和数字) - Google 工作表或 Excel
- c++ - Scrollbar->setValue 函数似乎无法正常工作
- powerbi - Power BI:使用生成系列将渐变绑定到切片器的简单直线图