gpt4 book ai didi

spring-integration - 使用 jdbc :outbound-gateway when query returns empty result set 时遇到问题

转载 作者:行者123 更新时间:2023-12-05 04:16:47 25 4
gpt4 key购买 nike

我注意到以下意外行为并且可以使用 Spring Integration 示例 basic/jdbc 重现它

运行 Spring Integration 示例 basic/jdbc 并立即尝试查找不存在的名称即使用 Spring Integration 示例 basic/jdbc 运行 Main.java,输入 1 查找人员,输入 Mark

A ReplyRequiredException 被抛出,因为没有找到行。如果我将 spring-integration-context.xml 中的 int-jdbc:outbound-gateway 定义更改为使用 requiresReply="false",然后调用 findPersonByName 阻塞,直到 int:gateway 在配置的 5 秒后超时。

这是一个非常典型的操作,我想使用 Spring Integration jdbc:outbound-gateway 返回一个包含 0 个或更多项的列表。对于 1 或更大的结果大小,它似乎工作正常。但是,当找到 0 个结果时,这两种行为都不可取。我不想要异常,因为有时会出现这种行为,而且我也不想阻塞直到超时。在异常的情况下,我可以使用 try/catch,但框架在 WARN 级别记录异常,我不想处理预期的行为,返回 0 个项目,异常处理,try/catch。有没有办法将 Spring Integration 示例 basic/jdbc 中的流程配置为在找不到名称时不阻塞或抛出异常返回,即只返回一个空列表?

最佳答案

很多用户都提出了这个要求,我们会进行调查。

与此同时,有一些解决方法。

  1. 添加 error-channel一些上游组件(例如 <gateway/> )来处理异常。
  2. 添加 ExpressionEvaluatingRequestHandlerAdvice到 JDBC 网关的 request-handler-advice-chain .设置为 returnFailureExpressionResult属性为 true,这会导致 onFailureExpression 的结果返回到调用线程而不是抛出异常。

关于spring-integration - 使用 jdbc :outbound-gateway when query returns empty result set 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26319614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com