spring-boot - 聚合器的 Spring Integration 迁移问题
问题描述
我正在将我的旧应用程序从 Spring Integration (SI) 从 4.3.8 移动到 5.2.6。(而且我使用 Spring Boot ver #2.2.7)在我的一些路线中,我有以下链:
<int:chain id="answersChain" input-channel="answersChannel">
<int:header-enricher>
<int:header name="route" expression="@config.get(payload.name)"
type="com.model.Route"/>
</int:header-enricher>
<int:aggregator discard-channel="unmatchedAnswersChannel"
group-timeout-expression="size() ge 2 ? 0 : one.headers['route']?.timeout"
expire-groups-upon-completion="true"
send-partial-result-on-expiry="false"
correlation-strategy-expression="payload.correlKey"
release-strategy-expression="size() == 2 and !#this[1].payload.sysReply"
expression="#this[1]"
/>
<int:router expression="headers['route'].source.channelName"/>
</int:chain>
实际上,代码和 SI 布局都包含单元测试。针对 4.3.8 版运行单元测试很好。但是针对 SI 版本 5.2.6 运行相同的测试失败。似乎最后一个'int:router'根本没有被调用。至少我看不到它在日志中被调用,因为我看到它在 SI 版本下运行。4.3.8。当单元测试失败时 - 没有任何东西被丢弃到丢弃通道中。看起来这个聚合器的行为就像一个黑洞。
我需要澄清两个问题:
- SI 版本中是否有任何关键更新/错误。5.2.6 引起的问题?
- 如何调试我的布局?到目前为止,我在调试下使用了不同的存根,但也许有一些更方便的方法?
提前感谢您的帮助
解决方案
在“跟踪”日志记录下,我看到该问题在我的应用程序的其他地方。实际上,到目前为止,对于 SI 聚合器逻辑还没有任何要求。
推荐阅读
- html - 不能将多个 FormItems 数据存储到 DB
- sql - 了解 SQL Server kill 语句 [适用于非管理员用户]
- java - 如何向普通应用授予 INTERACT_ACROSS_USERS 权限并处理这种情况?为什么需要这个权限?
- excel - 如何在 hadoop 中将 Excel 工作表中的数据和 Google 驱动器中的文件合并?
- mathjax - 使用 javascript 修改 Mathjax 的可变颜色
- vb.net - 如果 time2 到时间 1 大于 9 小时,则为 true
- c++ - 为什么与 C++ 相比,C 禁止向指针的两个级别添加 const 限定?
- java - 在代码中传递 git url 时出现 InvalidPathException
- android - java.lang.UnsatisfiedLinkError - 未找到本机方法的实现
- c++ - 如何避免使用 lock_guard 锁定?