@Bean
public IntegrationFlow extractFramesFlow() {
return IntegrationFlows.from(extractFramesChannel())
.handle(ObjectNode.class, (payload, headers) -> {
payload = validateFields(payload);
String path = payload.get("path").asText();
try {
File moviePath = new File(path);
ArrayNode arrayNode = mapper.createArrayNode();
String imageType = payload.path("image_type").asText("JPG");
String prefix = payload.path("prefix").asText();
Tools.thumbnails(moviePath, payload.get("slice").asInt(), payload.get("scale").asInt(),
imageType, prefix, file -> arrayNode.add(file.toString()));
payload.set("files", arrayNode);
} catch (IOException e) {
e.printStackTrace();
}
return payload;
}).enrichHeaders(h-> h.header("errorChannel", "asyncErrorChannel", true))
.<ObjectNode, Boolean>route(p-> !p.hasNonNull("id"),
m->m.channelMapping("true","httpCallbackFlow.input")
.channelMapping("false","uploadToS3Channel")).get();
}
@Bean
public IntegrationFlow httpCallbackFlow() {
return f->f.handle(Http.<JsonNode>outboundChannelAdapter(m->m.getPayload().get("call_back").asText()));
}
但是,当从handleAsyncErrors()流链接ObjectNode并到达相同的httpCallbackFlow()时,我们会得到一个异常,该异常由
restClientException:无法写入请求:在org.springframework.web.client.restTemplate$HttpEntityRequestCallback.dowithRequest(restTemplate.java:811)在org.springframework.web.client.restTemplate.doExecute(restTemplate.java:594)在org.springframework.web.client.restTemplate.execute(restTemplate.java:572)在Java:493)在org.springframework.integration.http.outbound.HttpRequestExecutingMessageHandler.HandleRequestMessage(HttpRequestExecutingMessageHandler.java:382)...24多
@Bean
public IntegrationFlow handleAsyncErrors() {
return IntegrationFlows.from(asyncErrorChannel())
.<MessagingException>handle((p, h) -> {
ObjectNode objectNode = mapper.createObjectNode();
objectNode.put("call_back", "http://some.test.uri");
return objectNode;
}).channel("httpCallbackFlow.input").get();
}
我不知道为什么这个异常会被完全相同的IntegrationFlow处理。
错误流上的消息没有ContentType
标头。
它是带有MessagingException
有效负载的错误消息;具有2个性质;原因
和失败消息
。
大概您在主流消息上有一个内容类型。您可以使用标题enricher设置内容类型,或添加
.<MessagingException, Message<?>>transform(p -> p.getFailedMessage())
问题内容: 尝试这段代码。为什么getValueB()返回1而不是2?毕竟,递增两次被调用两次。 问题答案: 毕竟,递增两次被调用两次。 是的,但是返回值是 在 第二次调用 之前 确定的。 返回的值由该 时间点在 return语句中的表达式求值确定,而不是“仅在执行离开方法之前”。 从JLS的14.17节开始: 一个带有Expression的return语句试图将控制权转移到包含它的方法的调用者;
问题内容: 有没有人看到像这样的方法签名后放置的数组? 版画 过去,“ C”兼容性是一种奇怪的表示法,但我也无法想象有人用C编写这种代码。 有谁知道为什么甚至允许这样做? 如果有问题,我正在使用Java 7 update 10。 这与Java 6中的功能相同。http://ideone.com/91rZV1 顺便说一句,这不会编译,我也不希望它编译 问题答案: 有谁知道为什么甚至允许这样做? 在这
我将数据保存到会话中,但是我尝试将其读回,结果为空。Spring MVC是我的后端,Angular 4是前端。 爪哇: 角: 你知道我错过了什么吗?也许是CORS的事?
我正在使用Mapstruct映射将一个POJO转换为另一个POJO模型 以下是mapstruct自动生成的方法 该方法基本上获取源POJO的映射,并将其转换为目标模型的映射。生成正在通过。 当我运行代码时,我在这个方法中得到了ClassCast异常:HeaderAttributeGenericDataTypeMaptoStringEnergiectAttributeDataMap 堆栈跟踪: 我还
我的程序读取一个自定义生成的字符串,它遵循以下模式: #INT{0,1,2}/STRING/LONG#INT{0,1,2}/STRING/LONG## 这是字符串开头和结尾的一个散列,分隔每个子字符串,每个子字符串包含0-2的int、字符串名称和长值(取自系统时钟)。这些子值由前斜杠分隔。 我的程序成功地在函数“splitOnHash”的散列上拆分了主字符串,并将其分配给一个字符串数组列表,我可以
我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方