实际上,我正在使用springboot在kafka流应用程序中工作。
所以在这里我尝试使用 @ControllerAdvice
但这对我不起作用。
是否可以使用 @ControllerAdvice
在我的申请表里。
仅当错误来自控制器时,此控制器建议才起作用。
注意:我的应用程序中没有任何控制器/rest控制器端点。
我们能用其他方法达到同样的效果吗?
请分享你宝贵的想法!
主流:
@Autowired
private XyzTransformer xyztransformer;
@Bean
public KStream<String, ABC> processMember(@Qualifier("defaultKafkaStreamsBuilder") StreamsBuilder streamsBuilder) {
try {
LOGGER.info("streaming started...");
KStream<String, Xyz> xyStream = streamsBuilder.stream(appProperty.kafkaStreamsTopicInput)
.transformValues(() -> xyztransformer)
xyStream.to(appProperty.kafkaStreamsTopicOutput);
return memberStream;
} catch (Exception ex) {
LOGGER.error("Exception occurred in Streams " + Arrays.toString(ex.getStackTrace()));
throw ex;
}
}
变压器等级:
@Component
public class XyzTransformer implements ValueTransformer<Xyz, Abc> {
@Override
public void close() {
}
@Override
public void init(ProcessorContext processorContext) {
}
@SneakyThrows
@Override
public Abc transform(Xyz data) {
String[] dataSourceTables = new String[]{"abc"};
try {
return Abc.builder()
.name(data.getName())
.build();
} catch (Exception ex) {
System.out.println("catched and throwing");
throw new CustomTesException("test 1");
}
}
}
控制器建议:
@ControllerAdvice
public class Advice extends ResponseEntityExceptionHandler {
@ExceptionHandler(NullPointerException.class)
public final void handleAllExceptions(NullPointerException ex) {
System.out.println("it is in the handler");
System.out.println(ex.getMessage());
}
@ExceptionHandler(Exception.class)
public final void handleAllException(Exception ex) {
System.out.println("it is in the exception handler");
System.out.println(ex.getMessage());
}
@ExceptionHandler(CustomTesException.class)
public final void handleAllExceptio(CustomTesException ex) {
System.out.println("it is in the exception handler");
System.out.println(ex.getMessage());
}
}
暂无答案!
目前还没有任何答案,快来回答吧!