spring integration修改错误消息有效负载

时间:2014-02-10 22:46:21

标签: spring-integration

对于我的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();

但在这种情况下,集合作为有效负载而不是单个文件发送。任何帮助将不胜感激。

1 个答案:

答案 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().