与有效负载交换标头并保持标头完整

时间:2015-12-03 09:27:39

标签: groovy spring-integration spring-xd

我有一个带有标头x,y,z的消息有效负载我想删除有效负载并将新的有效负载作为标头y的值并保持标头xyz完好无损。我正在尝试使用groovy .messagePayload是一个json字符串这是标题y的值

我的新消息=标头x y x +有效负载 其中payload = valueof header y

def messagePayload  = parser.parseText(headers['y'])

def newHeaders = [:] 
newHeaders.putAll(headers)
return org.springframework.messaging.support.MessageBuilder.withPayload(messagePayload.toString()).copyHeaders(newHeaders).build()​

1 个答案:

答案 0 :(得分:1)

??

newHeaders['y'] = messagePayload.toString()只是将headers['y']替换为自己的值(toString()),由def messagePayload = parser.parseText(headers['y'])确定

您没有显示足够的代码,但需要类似

的内容
newHeaders['y'] = originalPayload

修改

您说您希望与有效负载交换标头。如果您只想将有效负载复制到标头,请使用标头集合

<int:header-enricher>
    <int:header name="y" expression="payload" />
</int:header-enricher>

如果你想在代码中这样做......

MessageBuilder.fromMessage(message).setHeader("y", message.getPayload()).build;

<强> EDIT2

你的问题仍然不明确; parser.parseText(headers['y'])做了什么?

如果您只想用其中一个标头值替换消息有效负载,请使用转换:

<int:transform ... expression="headers['y']" />

标题将保持不变。

如果你想用java编写它

 MessageBuilder.withPayload(headers.get("y")).copyHeaders(headers).build();

我想在groovy中

 MessageBuilder.withPayload(headers.['y']).copyHeaders(headers).build();