Java 如何避免在Spring Integration@ServiceActivator方法中将头从输入复制到输出

Java 如何避免在Spring Integration@ServiceActivator方法中将头从输入复制到输出,java,spring-integration,Java,Spring Integration,我使用简单的代码来处理来自GooglePubSub订阅的消息,并将结果返回到主题中。 但由于某些原因,添加到输入消息的所有头也会显示在输出消息头上 有没有办法摆脱这种行为 处理代码如下所示: @ServiceActivator(inputChannel = "myInput", outputChannel = "myOutput") public Message<String> onMessage(String payload, @Headers Map<String,Obje

我使用简单的代码来处理来自GooglePubSub订阅的消息,并将结果返回到主题中。 但由于某些原因,添加到输入消息的所有头也会显示在输出消息头上

有没有办法摆脱这种行为

处理代码如下所示:

@ServiceActivator(inputChannel = "myInput", outputChannel = "myOutput")
public Message<String> onMessage(String payload, @Headers Map<String,Object> headers) throws SocketTimeoutException {
...
  return new GenericMessage<>(responseJson, Collections.singletonMap("type", "something"));
}

@ServiceActivator(inputChannel=“myInput”,outputChannel=“myOutput”)
消息上的公共消息(字符串有效负载,@Headers映射头)抛出SocketTimeoutException{
...
返回新的GenericMessage(responseJson,Collections.singletonMap(“type”,“something”);
}

在Spring集成文档中,我没有发现任何关于从输入到输出的“克隆”的内容;如果您改用
@Transformer
(并返回
消息
),则不会传播入站标头。

谢谢@Gary Russell-您能说明如何做到这一点吗?我不知道如何从transformer方法访问头,以及如何构建结果消息(并在其上设置类型头);刚刚使用了
@Transformer
注释而不是
@ServiceActivator
,它可以正常工作