Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Spring 不允许空相关。也许相关策略失败了?_Spring_Spring Integration_Aggregator_Message Channel - Fatal编程技术网

Spring 不允许空相关。也许相关策略失败了?

Spring 不允许空相关。也许相关策略失败了?,spring,spring-integration,aggregator,message-channel,Spring,Spring Integration,Aggregator,Message Channel,我使用的是spring集成,我使用的是默认的关联策略,也就是说,我没有显式地为关联策略编写代码,在拆分器之前一切都正常,在拆分器之后,有一个服务激活器进行一些处理,然后将消息放入一个通道中,聚合器必须从中选择它,但是聚合器没有选择它,所以我放置了一个拦截器来找出发生了什么,并发现在消息被放入聚合器通道之前,存在与聚合相关的头,如相关id等,但是一旦它被放入频道,头就会丢失。现在我不知道为什么之前的聚合器或频道会丢失头。任何帮助都将不胜感激 更新:-我使用一个spliier然后激活器,然后是另一个

我使用的是spring集成,我使用的是默认的关联策略,也就是说,我没有显式地为关联策略编写代码,在拆分器之前一切都正常,在拆分器之后,有一个服务激活器进行一些处理,然后将消息放入一个通道中,聚合器必须从中选择它,但是聚合器没有选择它,所以我放置了一个拦截器来找出发生了什么,并发现在消息被放入聚合器通道之前,存在与聚合相关的头,如相关id等,但是一旦它被放入频道,头就会丢失。现在我不知道为什么之前的聚合器或频道会丢失头。任何帮助都将不胜感激

更新:-我使用一个spliier然后激活器,然后是另一个拆分器,然后是激活器,然后是聚合器,然后是另一个聚合器。。。下面的代码是内部拆分器和聚合器组合的代码

谢谢您的帮助。 我终于解决了这个问题。 问题是我在向spring集成组件传递org.json.JSONOBject。 现在JSONObject没有被序列化,我猜拆分器和聚合器组件只能处理序列化的对象。最简单的方法是通过调用JSONObject上的toString()方法将其转换为string。如果堆栈跟踪告诉我我使用的是非序列化对象,而不是告诉我“不允许空相关。可能CorrelationStrategy失败了?”会更容易


为了安全起见,我已经删除了我放在这里的代码。

编辑您的帖子,并使用code StyleEdit,请让我知道它是否正确。另外请注意,我的聚合器方法将消息作为参数,不要在注释中放置代码/配置;它不可读;改为编辑问题。您需要显示service activator中的代码<代码>…但是一旦它被放入频道,头就会丢失…闻起来像是你自己在处理消息,而不是传播头。最好让框架来处理消息(和标题),并将POJO用于您的业务逻辑。另请参阅我对您的问题所做的编辑,以了解正确的格式。