对于我的spring集成流程中的错误处理,我想在服务激活器中捕获异常,该服务激活器从聚合器接收其输入,因此它处理一组消息。抛出异常时,尽管将完整集合作为消息有效内容发送。相反,我想把引发异常的实际项目作为错误消息的内容。
public Collection<File> move(Collection<File> files){
...
//process all files
for(File file : files){
if(file.getName().equals("file-2.done")){
throw new RuntimeException("SOMETHING WENT WRONG");
}
... process the file
}
我的异常处理程序期望检索导致错误的文件
File file = (File) message.getPayload().getFailedMessage().getPayload();
但在这种情况下,集合作为有效负载而不是单个文件发送。任何帮助将不胜感激。
答案 0 :(得分:1)
框架不知道您的move
方法中发生了什么。
你可以做点像......
public classs MyFileFailureException extends RuntimeException {
private final File file;
public MyFileFailureException(String msg, File file) {
super(msg);
this.file = file;
}
public File getFailedFile() {return this.file}
}
然后在move()......
throw new MyFileFailureException("message", file);
然后,使用...
访问它message.getPayload().getCause().getFailedFile().