Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用索赔检查模式在有效负载中保留一些信息?_Java_Spring_Spring Integration - Fatal编程技术网

Java 使用索赔检查模式在有效负载中保留一些信息?

Java 使用索赔检查模式在有效负载中保留一些信息?,java,spring,spring-integration,Java,Spring,Spring Integration,我正在读关于Spring集成的模式 使用此模式时,听起来好像整个有效负载都放在了消息存储中,而得到的有效负载只是声明检查id Spring是否提供了一种简单的方法来将有效负载存储在消息存储中,同时保留有效负载的特定部分?您是否需要首先使用标头enricher并在标头中存储要访问的属性 例如,假设我的有效负载是一个简单的XML文档: 1234432156788765 5799 我想声明检查此有效负载,但仍保留对有效负载或元素的访问权。使用当前的Spring集成组件如何做到这一点?索赔检查的主要

我正在读关于Spring集成的模式

使用此模式时,听起来好像整个有效负载都放在了消息存储中,而得到的有效负载只是声明检查id

Spring是否提供了一种简单的方法来将有效负载存储在消息存储中,同时保留有效负载的特定部分?您是否需要首先使用标头enricher并在标头中存储要访问的属性

例如,假设我的有效负载是一个简单的XML文档:


1234432156788765
5799

我想声明检查此有效负载,但仍保留对
有效负载或
元素的访问权。使用当前的Spring集成组件如何做到这一点?

索赔检查的主要目的是存储消息,而不必担心消息的大小,因为消息可能会通过多个外部系统传输。它也可以在系统故障后恢复

现实世界中最好的例子就是飞行行李。在转车过程中,您手中只有收据,并在最后拿到行李

为了实现您的目标,我建议您使用


这样您就不会丢失原始的
有效载荷
,并且在标题中有索赔检查
id

注意:Claim Check存储整个带有标题的
消息
,而不仅仅是
有效负载
。相关代码来自
org.springframework.integration.transformer.ClaimCheckInTransformer

@覆盖
受保护对象DotTransform(消息)引发异常{
Assert.notNull(消息,“消息不能为null”);
对象负载=message.getPayload();
notNull(有效载荷,“有效载荷不得为空”);
Message storedMessage=this.messageStore.addMessage(消息);
MessageBuilder responseBuilder=MessageBuilder.withPayload(storedMessage.getHeaders().getId());
//“当前”消息的标题优先
copyHeaders(message.getHeaders());
返回responseBuilder.build();
}

因此,即使在通过
索赔签入后,所有标题也会保留下来
?是的。正确:这可能是另一个选择,如何保留您的
有效负载。或者在声明签入后保留
——只是将其移动到之前的标题。感谢您的编辑。现在我知道了如何用具体的语言来显示代码,这也提高了我的英语水平。