【问题标题】:exchange header with payload and keep headers intact与有效负载交换标头并保持标头完整
【发布时间】:2015-12-03 09:27:39
【问题描述】:

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

我的新消息 = 标头 x y x+ 有效负载 其中有效载荷 = 标头 y 的值

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

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

【问题讨论】:

    标签: groovy spring-integration spring-xd


    【解决方案1】:

    ??

    newHeaders['y'] = messagePayload.toString() 只是用它自己的值 (toString()) 替换 headers['y'],由 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();
    

    【讨论】:

    • 我想将标头 y 中的值复制为新的有效负载。并保持所有标题值不变
    • 标题说您要交换标头和有效负载 - 如果您只想复制标头,请查看我的编辑。
    • 抱歉,我的问题可能是错误的,我更新了我的问题,请参见上文。
    • 我仍然不确定您要做什么parser。查看我的编辑。
    • 我写了额外的代码来做到这一点。感谢您展示简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2021-09-14
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 2018-01-26
    • 2015-05-03
    相关资源
    最近更新 更多