gpt4 book ai didi

java - 在 Spring Integration 中的消息 header 中设置文件名

转载 作者:行者123 更新时间:2023-12-01 12:08:11 24 4
gpt4 key购买 nike

我想在消息的标题中设置文件名。所以我放置了标题丰富器:

<int:header-enricher input-channel="singleFile" output-channel="fileNameAddedToHeader">
<int:header name="file-name" ref="fileNameHeaderEnricher" method="enrichHeader"/>
</int:header-enricher>

丰富方法是:

public Message<File> enrichHeader(Message<File> fileMessage) {
File file = (File) fileMessage.getPayload();
Message<File> messageOut =
MessageBuilder.withPayload(fileMessage.getPayload()).copyHeadersIfAbsent(fileMessage.getHeaders())
.setHeaderIfAbsent("file-name", file.getName()).build();
return messageOut;
}

但是 header 似乎没有正确添加。

.11:32:33.248 [task-scheduler-1] DEBUG o.s.i.channel.DirectChannel - postSend (sent=true) on channel 'fileNameAddedToHeader', message: GenericMessage [payload=/home/cost1.txt, headers={timestamp=1418363253171, id=d119e90e-938c-89c3-803e-e980da3de2db, correlationId=d2d5bf51-0647-12db-916d-98884943c08b, file-name=GenericMessage [payload=/home/cost1.txt, headers={timestamp=1418363253170, id=2374031d-4cc8-43bc-f15a-8061c28bec51, correlationId=d2d5bf51-0647-12db-916d-98884943c08b, file-name=costcenter1.txt, sequenceSize=1, sequenceNumber=1}], sequenceSize=1, sequenceNumber=1}] 

似乎file-name包含 header 部分而不是文件名。

file-name=GenericMessage [payload=/home/cost1.txt, headers={timestamp=1418363253170, id=2374031d-4cc8-43bc-f15a-8061c28bec51, correlationId=d2d5bf51-0647-12db-916d-98884943c08b, file-name=costcenter1.txt, sequenceSize=1, sequenceNumber=1}]

我期待 header 中出现file-name=cost1.txt。我在设置标题时做错了什么?是否可以使用 SpEL 将文件名添加到 header 来完成此任务?

最佳答案

是的,这样做是错误的。

参见:

<int:header name="file-name" ref="fileNameHeaderEnricher" method="enrichHeader"/>

假设该方法的结果将填充到 file-name header 。

自从您的 enrichHeader返回 Message对象,我们最终确实看到了这一点。

SpEL 变体看起来更适合您的情况:

<int:header name="file-name" expression="payload.name"/>

请注意,如果您要将其用于下游 <int-file:outbound-channel-adapter> header 必须是 file_name -FileHeaders .

关于java - 在 Spring Integration 中的消息 header 中设置文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27437722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com