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 集成流程异步中的错误处理 的相关文章

  • Spring控制器是线程安全的吗

    我遇到了这个控制器示例 想知道它是否是线程安全的 我特别想知道 gson 实例变量 import org springframework stereotype Controller import org springframework we
  • 检查双精度值的等于和不等于条件

    我在比较两者时遇到困难double values using and 我创建了 6 个双变量并尝试进行比较If健康 状况 double a b c d e f if a b c d e f My code here in case of t
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • Java:从元素创建 DOM 元素,而不是文档

    如您所知 在 Java 中创建 Dom 元素的正确方法是执行以下操作 import org w3c dom Document import org w3c dom Element Document d Element e e d creat
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • Spring Stomp over Websocket:流式传输大文件

    我的SockJs客户端在网页中 发送帧大小为16K的消息 消息大小限制决定了我可以传输的文件的最大大小 以下是我在文档中找到的内容 Configure the maximum size for an incoming sub protoco
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 来自客户端的超时 Web 服务调用

    我正在使用 RestEasy 客户端调用网络服务 一项要求是 如果调用运行时间超过 5 秒 则中止 超时调用 我如何使用 RestEasy 客户端实现这一目标 我只看到服务器端超时 即如果在一定时间内未完成请求 Rest Easy 网络服务
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 尝试使用带有有效购买令牌的 Java Google Play Developer API v3 检索应用内购买信息时出现错误请求(无效值)

    当使用 Java Google Play Developer API 版本 3 并请求有效购买令牌的购买信息时 我收到以下异常 API 调用返回 400 Bad Request 响应以及以下消息 code 400 errors domain

随机推荐

  • 如何对 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 控制器调用网关方法并让控制器返回 而集成流将在不阻塞控制器的单独线程中自行继续 但是 我无法弄清楚如何让我的错误处理程序适用于此异步流程 我的网关定义了错误通道 但由