我已经在当前成功地使用了 Spring Integration 来满足一些需求。太棒了..
在重负载下观察到一些奇怪的行为,其中同一条消息似乎被处理了不止一次。我可以确认这一点,因为数据库中有多行,这通常是通过 channel 配置的链上的最后一个命令。
进一步深入研究手册,看起来负载平衡是由 spring 自动完成的。手册上说消息在多个消息处理程序之间是平衡的。
问题是:
- 默认情况下, channel 上有多少个处理程序?加载的 spring XML 似乎没有该配置。我所做的就是这样(根据手册中的建议):
<int:channel id="SwPath.Channel"/> <int:chain id="SwPath.chain" input-channel="SwPath.Channel"> </int:chain>
我可以禁用故障转移,但我很想知道默认情况下有多少个故障转移。
最佳答案
自从我研究这些负载均衡器以来已经有一段时间了,但我记得线程池中的默认线程数在 2 到 10 之间。
您可能发现了并发错误。
如果您打开 TRACE 日志记录,负载均衡器将为您提供大量信息,但这很容易隐藏问题。
如果您使用 JUnit 测试用例创建 JIRA 问题,我相信会更容易弄清楚到底发生了什么。
关于java - Spring 内容集成 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12570518/