我有一个带有标头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()
答案 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();