0

我有一个简单的 Spring Integration 2.0.1 聚合器设置,使用 SimpleMessageStore 以及定义的常规 Spring MessageGroupStoreReaper,以便能够实现分组超时机制(它在 Spring Integration 1.0 中仅用作聚合器的“超时”参数。 4)。

我已经调试并验证了消息在 SimpleMessageStore 中基于 groupId 正确聚合,但在超时时 MessageGroupStoreReaper 失败,并出现“无法通过 getter 访问属性'消息'”AccessException。确切的错误位于MessagingMethodInvokerHelper 类中,它断言消息字段不为空。似乎在调用程序执行期间聚合的消息不可用,从而导致“消息的方法参数无效:期待单个有效负载。” IllegalStateException。

此问题的原因可能是什么以及如何解决?

我已经尝试更新到 2.0.6,但问题仍然存在。

***编辑我将我的 SI 依赖项更新为 2.2.5,但这并没有解决我的问题。我使用 Spring 3.0.7。

4

2 回答 2

1

只有一个解决方案来修复它只是升级到最新版本的 Spring Integration - 2.2.6。2.0 现在不支持了。对不起

于 2013-11-06T11:26:06.950 回答
0

我解决了这个问题,似乎之前适用于 SI 1.0.4 的设置需要在服务激活器端进行修改 - 输出通道是预期List<Message<?>>的,而实际聚合类型是Message<List<Message<?>>>. 在修改激活器的方法签名以匹配后一种类型后,SI 能够正确匹配签名候选者。这也可以通过修改聚合器添加方法以在特定消息而不是列表上进行操作来解决,而无需修改激活器。

于 2013-11-06T13:25:45.420 回答