与负载交换 header 并保持 header 完整
exchange header with payload and keep headers intact
我有一个带有 headers x ,y,z 的消息负载 我想删除负载并将新负载设为 header y 的值并保留 headers x y z intact.I 我正在尝试使用 groovy .messagePayload 是一个 json 字符串,它是 header y
的值
我的新消息 = header 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()
??
newHeaders['y'] = messagePayload.toString()
只是用它自己的值 (toString()
) 替换 headers['y']
,由 def messagePayload = parser.parseText(headers['y'])
决定
您没有显示足够的代码,但您需要像
这样的东西
newHeaders['y'] = originalPayload
编辑
你说你想交换 header 与负载。如果您只想将有效负载复制到 header,请使用 header enricher
<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'])
是做什么的?
如果您只想用 header 值之一替换消息负载,请使用转换:
<int:transform ... expression="headers['y']" />
header将保持不变。
如果要写成java
MessageBuilder.withPayload(headers.get("y")).copyHeaders(headers).build();
我猜 groovy 是
MessageBuilder.withPayload(headers.['y']).copyHeaders(headers).build();
我有一个带有 headers x ,y,z 的消息负载 我想删除负载并将新负载设为 header y 的值并保留 headers x y z intact.I 我正在尝试使用 groovy .messagePayload 是一个 json 字符串,它是 header y
的值我的新消息 = header 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()
??
newHeaders['y'] = messagePayload.toString()
只是用它自己的值 (toString()
) 替换 headers['y']
,由 def messagePayload = parser.parseText(headers['y'])
您没有显示足够的代码,但您需要像
这样的东西newHeaders['y'] = originalPayload
编辑
你说你想交换 header 与负载。如果您只想将有效负载复制到 header,请使用 header enricher
<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'])
是做什么的?
如果您只想用 header 值之一替换消息负载,请使用转换:
<int:transform ... expression="headers['y']" />
header将保持不变。
如果要写成java
MessageBuilder.withPayload(headers.get("y")).copyHeaders(headers).build();
我猜 groovy 是
MessageBuilder.withPayload(headers.['y']).copyHeaders(headers).build();