in start/src/main/java/org/apache/rocketmq/eventbridge/handler/ExceptionHandler.java [48:75]
public Mono<Void> handle(ServerWebExchange exchange, Throwable throwable) {
ServerHttpResponse serverHttpResponse = exchange.getResponse();
BaseResponse baseResponse = new BaseResponse();
HttpStatus httpStatus = null;
if (throwable instanceof EventBridgeException) {
EventBridgeException eventBridgeException = (EventBridgeException)throwable;
baseResponse.setCode(eventBridgeException.getCode());
baseResponse.setMessage(eventBridgeException.getMessage());
httpStatus = HttpStatus.resolve(eventBridgeException.getHttpCode());
} else if (throwable instanceof ResponseStatusException) {
baseResponse.setMessage(((ResponseStatusException) throwable).getMessage());
httpStatus = ((ResponseStatusException) throwable).getStatus();
} else {
baseResponse.setCode(EventBridgeErrorCode.InternalError.getCode());
baseResponse.setMessage(EventBridgeErrorCode.InternalError.getMsg());
httpStatus = HttpStatus.resolve(EventBridgeErrorCode.InternalError.getHttpCode());
log.error("Catch unexpected exception.", throwable);
}
byte[] responseByte = new Gson().toJson(baseResponse)
.getBytes(StandardCharsets.UTF_8);
DataBuffer buffer = serverHttpResponse.bufferFactory()
.allocateBuffer()
.write(responseByte);
serverHttpResponse.setStatusCode(httpStatus);
serverHttpResponse.getHeaders()
.add(HttpHeaderNames.CONTENT_TYPE.toString(), MediaType.JSON_UTF_8.toString());
return serverHttpResponse.writeAndFlushWith(Mono.just(ByteBufMono.just(buffer)));
}