Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring集成头Enricher在链中工作_Java_Spring_Spring Integration - Fatal编程技术网

Java Spring集成头Enricher在链中工作

Java Spring集成头Enricher在链中工作,java,spring,spring-integration,Java,Spring,Spring Integration,这是我的spring集成案例: 1) 下载pdf文件的ftp适配器 2) pdf2TextTransformer使用pdfbox将pdf转换为文本 3) PDFTEXT2CSV转换器将文本转换为csv 我在链中添加了一个enricher,但是,头似乎没有传播到myErrorChannel,任何人都可以告诉我为什么 这是我的调试日志,头文件\u originalFile不会传播到myErrorChannel ][Headers={file_originalFile=D:\projects\DMTP

这是我的spring集成案例:

1) 下载pdf文件的ftp适配器

2) pdf2TextTransformer使用pdfbox将pdf转换为文本

3) PDFTEXT2CSV转换器将文本转换为csv

我在链中添加了一个enricher,但是,头似乎没有传播到myErrorChannel,任何人都可以告诉我为什么

这是我的调试日志,头文件\u originalFile不会传播到myErrorChannel

][Headers={file_originalFile=D:\projects\DMTP\ftp\local2\6000047256 - Copy - Copy.pdf, file_name=6000047256 - Copy - Copy.pdf, id=a091fe5e-83f3-e48c-4be5-927849dbf31a, timestamp=1501472718172}]
11:45:18.180 DEBUG [task-scheduler-2][org.springframework.integration.channel.PublishSubscribeChannel] preSend on channel 'errorChannel', message: [Payload MessageTransformationException content=org.springframework.integration.transformer.MessageTransformationException: org.springframework.messaging.MessageHandlingException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3][Headers={id=251c77f0-30e8-e18c-6980-ebfb289f79a4, timestamp=1501472718180}]
11:45:18.180 DEBUG [task-scheduler-2][org.springframework.integration.handler.ServiceActivatingHandler] ServiceActivator for [org.springframework.integration.handler.MethodInvokingMessageProcessor@56eacc77] received message: [Payload MessageTransformationException content=org.springframework.integration.transformer.MessageTransformationException: org.springframework.messaging.MessageHandlingException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3][Headers={id=251c77f0-30e8-e18c-6980-ebfb289f79a4, timestamp=1501472718180}]
file_originalFile:null
MessageHeaders: {id=251c77f0-30e8-e18c-6980-ebfb289f79a4, timestamp=1501472718180}
MessagePayload: org.springframework.integration.transformer.MessageTransformationException: org.springframework.messaging.MessageHandlingException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3
11:45:18.182 DEBUG [task-scheduler-2][org.springframework.integration.handler.ServiceActivatingHandler] handler 'ServiceActivator for [org.springframework.integration.handler.MethodInvokingMessageProcessor@56eacc77]' produced no reply for request Message: [Payload MessageTransformationException content=org.springframework.integration.transformer.MessageTransformationException: org.springframework.messaging.MessageHandlingException: java.lang.StringIndexOutOfBoundsException: String index out of range: -3][Headers={id=251c77f0-30e8-e18c-6980-ebfb289f79a4, timestamp=1501472718180}]
以下是我的配置:


如果变压器返回
消息
,则它们负责复制标题;该框架假定:。如果您的转换器是POJO,并且只返回转换后的负载(推荐的编程模型),那么框架将负责传播头

打开调试日志以检查消息流;如果您仍然认为它“不起作用”,请详细解释并编辑问题以显示日志


顺便说一句,“不工作”不是问题的适当描述。

如果您的变压器返回
消息
,则他们负责复制标题;该框架假定:。如果您的转换器是POJO,并且只返回转换后的负载(推荐的编程模型),那么框架将负责传播头

打开调试日志以检查消息流;如果您仍然认为它“不起作用”,请详细解释并编辑问题以显示日志


顺便说一句,“不工作”不是对问题的适当描述。

错误消息构建在轮询器中,它基于异常:

try {
    getMessagingTemplate().send(errorChannel, getErrorMessageStrategy().buildErrorMessage(t, null));
            sent = true;
}
没有关于原始标题的任何信息

您的标题,尤其是
显示在下游
请求消息中。通常,当集成组件中发生异常时,会抛出
MessaginException

在您的情况下,它是
MessageTransformationException
。这种异常具有
failedMessage
属性。这正是您的
requestMessage
错误中的“罪过”。而且,正如您所了解的,您已经可以在这里访问您的头文件-
MessaginException.getFailedMessage().getHeaders()get(“foo”)
。当然,
文件\u originalFile
也将在此处提供。

轮询器内置
错误消息
,它基于以下异常:

try {
    getMessagingTemplate().send(errorChannel, getErrorMessageStrategy().buildErrorMessage(t, null));
            sent = true;
}
没有关于原始标题的任何信息

您的标题,尤其是
显示在下游
请求消息中。通常,当集成组件中发生异常时,会抛出
MessaginException

在您的情况下,它是
MessageTransformationException
。这种异常具有
failedMessage
属性。这正是您的
requestMessage
错误中的“罪过”。而且,正如您所了解的,您已经可以在这里访问您的头文件-
MessaginException.getFailedMessage().getHeaders()get(“foo”)
。当然,
文件\u originalFile
也将在这里提供。

谢谢,Gary我的转换是POJO,我添加了调试日志供您参考,您能帮我检查一下头文件\u originalFile为什么没有传播到myErrorChannel吗?也可以看到我的答案。叹气;正如你所看到的,“不起作用”对这个问题的解释是完全不充分的;现在,您添加了一个重要部分,关于错误通道。永远,永远,永远,永远不要问一个“不起作用”的问题,没有进一步的解释。谢谢@ArtemBilan。谢谢,Gary,我的转换是POJO,我添加了调试日志供您参考,您能帮我检查一下头文件\u originalFile为什么没有传播到myErrorChannel吗?另请看我的答案。叹气;正如你所看到的,“不起作用”对这个问题的解释是完全不充分的;现在,您添加了一个重要部分,关于错误通道。永远,永远,永远,永远不要问一个“不起作用”的问题,没有进一步的解释。谢谢@ArtemBilan。