Enviando mensagem de erro nos websockets do Spring

Estou tentando enviar mensagens de erro nos websockets do Spring com STOMP sobre SockJS.

Estou basicamente tentando alcançar o que está sendo feitoaqui.

Este é o meu manipulador de exceções

@MessageExceptionHandler
@SendToUser(value = "/queue/error",broadcast = false)
public ApplicationError handleException(Exception message) throws ApplicationError {
        return  new ApplicationError("test");
}

E eu estou assinando

stompClient.subscribe('/user/queue/error', stompErrorCallback, {token: accessToken});

O usuário no meu caso não está autenticado, mas deaqui

Embora os destinos do usuário geralmente impliquem um usuário autenticado, ele não é exigido estritamente. Uma sessão do WebSocket que não está associada a um usuário autenticado pode se inscrever em um destino de usuário. Nesses casos, a anotação @SendToUser se comportará exatamente da mesma forma que com broadcast = false, ou seja, direcionar apenas a sessão que enviou a mensagem a ser tratada.

Tudo isso funciona bem quando estou lançando esse erro demyHandler qual é o meu manipulador de Websocket definido na configuração do websocket.

eu tenho umClientInboundChannelInterceptor que se estendeChannelInterceptorAdapter que intercepta todas as mensagens empreSend.

Em caso de qualquer exceção neste interceptor, quero devolvê-lo à sessão do usuário que enviou esta mensagem,

public class ClientInboundChannelInterceptor extends ChannelInterceptorAdapter {
    @Autowired
    @Lazy(value = true)
    @Qualifier("brokerMessagingTemplate")
    private SimpMessagingTemplate simpMessagingTemplate;

    @Override
    public Message<?> preSend(Message message, MessageChannel channel) throws IllegalArgumentException{
         if(some thing goes wrong)
           throw new RuntimeException();
    }

    @MessageExceptionHandler
    @SendToUser(value = "/queue/error",broadcast = false)
    public ApplicationError handleException(RuntimeException message) throws    ApplicationError {
        return  new ApplicationError("test");
    }
}

@MessageExceptionHandler não captura essa exceção. Então, tentei enviá-lo diretamente ao usuário usandosimpMessagingTemplate.

Eu basicamente quero fazer:

simpMessagingTemplate.convertAndSendToUser(SOMETHING,"/queue/error",e);

ALGUMA COISA deve ser o nome de usuário correto, mas o usuário não está autenticado no meu caso, portanto, não posso usarheaderAccessor.getUser().getName()

Eu até tentei com

simpMessagingTemplate.convertAndSendToUser(headerAccessor.getHeader("","/queue/error",e, Collections.singletonMap(SimpMessageHeaderAccessor.SESSION_ID_HEADER, headerAccessor.getSessionId()));

Mas isto não está funcionando.

Eu até tenteiheaderAccessor.getSessionId() no lugar do nome de usuário, mas isso não parece funcionar.

Qual é a maneira correta de fazer isso?

O que devo usar como nome de usuário emconvertAndSendToUser?

questionAnswers(2)

yourAnswerToTheQuestion