在 Header 中将 Header 信息作为 JSONObject 在 Spring-XD 中传递

Passing HeaderInformation as JSONObject in Header in Spring-XD

我在 Header 和下一个 module/processor 中使用以下代码将数据作为 JSONObject 作为字符串传递,但我收到的下一个模块的数据是 "java.io.DataInputStream@7c6a857" 并且无法将其转换回来以 JSONObject 作为字符串。

messageOut = MessageBuilder.withPayload(message-payload).copyHeaders(payload.getHeaders()).setHeader("ActualRecord", JSONObject).build();

我假设您正在使用 RabbitMQ 作为传输。

总线内使用的DefaultMessagePropertiesConverter默认限制headers为1024字节;任何更大的东西都会在 headers 中保留为 DataInputStreamMessagePropertiesConverter 可针对此大小进行配置,但 XD 当前未提供允许增加此大小的设置。

您需要从 DataInputStream 读取到 byte[] 以恢复 JSON。

我开了一个JIRA Issue支持配置LongString限制