Spring 集成流程异步中的错误处理

2023-12-02

我有以下 Spring Integration 配置,它允许我从 MVC 控制器调用网关方法并让控制器返回,而集成流将在不阻塞控制器的单独线程中自行继续。

但是,我无法弄清楚如何让我的错误处理程序适用于此异步流程。我的网关定义了错误通道,但由于某种原因我的异常没有到达它。相反,我看到LoggingHandler被调用。

@Bean
IntegrationFlow mainInteractiveFlow() {
    return IntegrationFlows.from(
            MessageChannels.executor("input", executor))
            .split()
            .channel(MessageChannels.executor(executor))
            .transform(transformer)
            .handle(genericMessageHandler, "validate")
            .handle(genericMessageHandler, "checkSubscription")
            .handle(interactiveMessageService, "handle")
            .<Task, String>route(p -> p.getKind().name(),
                    m -> m.channelMapping(TaskKind.ABC.name(), "attachInteractiveChannel"))
            .get();
}

@Bean
IntegrationFlow attachInteractiveChannelFlow() {
    return IntegrationFlows.from(
            MessageChannels.direct("attachInteractiveChannel"))
            .handle(issueRouterService)
            .get();
}

@Bean
IntegrationFlow interactiveExceptionChannelFlow() {
    return IntegrationFlows.from(interactiveExceptionChannel())
            .handle(errorHandler, "handleErrorMessage")
            .get();
}

@Bean
MessageChannel interactiveExceptionChannel() {
    return MessageChannels.direct("interactiveExceptionChannel").get();
}

Gateway:

@MessagingGateway(errorChannel = "interactiveExceptionChannel")
public interface InteractiveSlackGW {

    @Gateway(requestChannel = "input")
    void interactiveMessage(Collection<Request> messages);

}

我应该做什么才能看到错误处理程序处理的异步集成流中发生的异常?


网关带有voidreturn 预计不会有回复,因此消息标头中不会添加回复/错误通道。当在调用线程上运行时,异常被抛出给调用者;对于异步流,异常将转到默认值errorChannel(附有日志适配器)。

对于这种情况,您需要添加标头丰富器来设置errorChannel标头到您的错误通道。

我们应该考虑自动执行此操作,但目前还没有发生。

我开了一个JIRA 问题为了这。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 集成流程异步中的错误处理 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从终端运行处理应用程序

    我目前正在使用加工 http processing org对于一个小项目 但是我不喜欢它附带的文本编辑器 我使用 vim 编写所有代码 我找到了 pde 文件的位置 并且我一直在从 vim 中编辑它们 然后重新打开它们并运行它们 重新加载脚
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 如何对 SQL 查询中的两个字段求和

    我需要获取同一行中两个字段的总数 并将该数字输入到同一行末尾的字段中 这是我的代码 Sum tbl1 fld1 tbl1 fld2 AS Total 这是 SUM 函数的用途 还是只能使用 SUM 函数来获取列的总计 Thanks SUM是
  • HTML 范围滑块,每 5 个标签

    我有一个简单的 HTML 范围滑块 最小值为 0 最大值为 30 我想在滑块下方放置标签 但只能每 5 个 代码如下所示 演示页面在这里 https premiecheck omzetgarant nl CalcTool test html
  • Powershell:设置计划任务在用户未登录时运行

    我一直在使用Powershell 计划任务 Cmdlet在我们的服务器上创建计划任务 如何选择 无论用户是否使用此 API 登录都运行 我已经创建了action trigger principal and settings对象 并将它们传递
  • shell_exec() 的输出包含重音字符被破坏

    我有一个从 PHP 运行的命令shell exec 有时命令的输出将包含重音字符 从 Bash 运行时 输出显示正确 但是 当从shell exec 重音字符会丢失并且输出会有所截断 示例输出来自Bash D 0 Tue Oct 25 16
  • 当我在 python 中绘制某些内容时,程序执行会停止,直到我关闭绘图[重复]

    这个问题在这里已经有答案了 这是我的代码 在计算了一些内容之后 我希望它在每一步都绘制它们 import time import numpy as np import pandas as pd import matplotlib pyplo
  • 如何降级vscode

    上次更新后 我在 vscode 中调试时遇到了问题 有事发生 https github com Microsoft vscode issues 45657 我想检查以前的版本 看看我的情况是否是这里或 vscode 中的问题 但我找不到如何
  • 如何使用 AVAssetReader 在 iOS 上正确读取解码的 PCM 样本 - 当前解码不正确

    我目前正在开发一个应用程序 作为计算机科学学士学位的一部分 该应用程序会将来自 iPhone 硬件 加速计 GPS 的数据与正在播放的音乐关联起来 该项目仍处于起步阶段 仅进行了两个月 我现在需要帮助的地方是从 itunes 库中的歌曲中读
  • 为什么 IE 需要我点击两次

    我有这个 jQuery billing info click function e e preventDefault if shipping selection length gt 0 if shipping selection check
  • 当在下拉列表中选择相同的值时触发事件?

    问题 我有一个下拉菜单 其中包含年份列表 但未选择任何内容 用户选择 1976 我运行一个函数 如果用户再次单击下拉列表并再次选择 1976 我想再次运行该函数 select on change function e var optionS
  • Blazor - app.UseIdentityServer();使用 .pfx 密钥文件 - 解析数字时遇到意外字符

    我创建了一个新的 Blazor WebAssembly 应用程序 其中包含个人用户帐户 应用程序内存储用户帐户和 NET 5 中托管的 ASP NET Core 将我的应用程序部署到 Azure 应用服务时 出现以下错误 未将对象引用设置为
  • 如何初始化静态成员[重复]

    这个问题在这里已经有答案了 我想初始化两个静态数据成员 查看两个文件 Logger h class Logger public static LoggerConcrete error static LoggerConcrete write
  • 无法让 JQuery Draggable 插件工作?

    我很新JQuery我正在尝试使用 Draggable 插件创建一个示例页面 页面加载正常 但我无法拖动我的 div 标记任何地方 我一直在尝试复制这个demo 这是我的代码 div
  • R、RDCOMClient 和 Outlook:使用共享地址访问收件箱消息

    我在 Outlook 中有几个收件箱 电子邮件受保护 加上一些共享收件箱 例如 电子邮件受保护 例如 或者 电子邮件受保护 依照指示这个方法我正在尝试访问我自己的收件箱中的电子邮件 问题是 有时 收件箱访问邮件 电子邮件受保护 有时它可以是
  • MySQL 时区

    是否有 MySQL 时区的详尽列表 看来有效值time zoneMySQL 中的设置取决于主机操作系统 但我无法找到可能值的列表 我需要时间显示卡尔加里当地时间 默认情况下 至少在基于 Debian 的安装中 不会将时区数据加载到 MySQ
  • Google 地图 API RefererNotAllowedError

    我创建了一个用于 Google Maps JavaScript API 的 Google 密钥 一切正常 直到我添加到下面的凭据接受来自这些 HTTP 引荐来源网址的请求 我以这种格式添加了引荐来源网址 example com 根据凭证页面
  • Android isodep.isConnected() 返回 false 且最大收发长度:0 字节,对于 B 型卡。

    我正在开发一个 Android 应用程序 需要读取并显示 B 型卡中的数据 卡连接良好 但是当isodep isConnected 被调用它返回 false 我扫描了这张卡TagInfo应用程序 由 NXP 提供 可在 Play Store
  • JAudioTagger 和 Android - 更改 mp3 中的值?

    我可以从音频文件中读取标题 艺术家 专辑封面和其他信息等元信息 但我从未能够成功写入元信息 大家有这方面的经验吗 有比 JAudioTagger 更好的库吗 我会提供一些示例代码 但我尝试了十几种不起作用的方法 就像是 AudioFile
  • 无扩展名文件上的 Eclipse 语法高亮显示?

    我有一个 perl CGI 脚本 需要具有特定的无扩展名文件名才能从使用它的软件正确运行 我在 Ubuntu 11 04 Linux 上使用 Eclipse 3 7 0 作为我的 IDE 它不会突出显示文件上的语法 也不会使用有限的自动完成
  • Node.js 错误:连接 ECONNREFUSED

    我是节点新手 在一个简单的教程中遇到了这个错误 我在 OS X 10 8 2 上从 CodeRunner 和终端尝试此操作 我也尝试过将我的模块放入node modules folder 我可以看出这是某种连接问题 但我不知道为什么 eve
  • Spring 集成流程异步中的错误处理

    我有以下 Spring Integration 配置 它允许我从 MVC 控制器调用网关方法并让控制器返回 而集成流将在不阻塞控制器的单独线程中自行继续 但是 我无法弄清楚如何让我的错误处理程序适用于此异步流程 我的网关定义了错误通道 但由