如何处理响应超时?

2024-01-23

在 akka-http 路由中我可以返回Future作为隐式转换为的响应ToResponseMarshaller.

有什么方法可以处理这个未来的超时吗?或者路由级别的连接超时?或者一种方法是使用Await()功能?

现在客户可以永远等待响应。

complete {
   val future = for {
     response <- someIOFunc()
     entity <- someOtherFunc()
   } yield entity
   future.onComplete({
     case Success(result) =>
       HttpResponse(entity = HttpEntity(MediaTypes.`text/xml`, result))
     case Failure(result) =>
       HttpResponse(entity = utils.getFault("fault"))
   })
   future
 }

向异步操作添加超时意味着创建一个由操作本身或超时完成的新 Future:

import akka.pattern.after
val future = ...
val futureWithTimeout = Future.firstCompletedOf(
    future ::
    after(1.second, system.scheduler)(Future.failed(new TimeoutException)) ::
    Nil
  )

第二个 Future 也可以保存一个成功的结果来替换错误,具体取决于您想要建模的具体内容。

附带说明:所提供的代码示例包含死代码,在 Future 上注册 onComplete 处理程序仅对副作用有意义,但您似乎想要转换 Future 的值并从中创建 HttpEntity。这应该使用完成map and recover:

future
  .map(result => HttpResponse(entity = HttpEntity(MediaTypes.`text/xml`, result)))
  .recover { case ex => HttpResponse(entity = utils.getFault("fault")) }

这将是传递给的总体返回值complete指示。

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

如何处理响应超时? 的相关文章

  • 对 Spark 数据集中的数字字符串进行排序

    假设我有以下内容Dataset productCode amount XX 13 300 XX 1 250 XX 2 410 XX 9 50 XX 10 35 XX 100 870 Where productCode is of Strin
  • WSClient - 打开的文件太多

    我正在 CentOS 6 上使用 Play Framework 2 4 我的应用程序抛出此异常 java net SocketException Too many open files 我在 Stack Overflow 上搜索了很多主题并
  • Akka中有轻量级的actor吗?

    我的用例非常简单 在两个对象之间交换少量 现在我正在从 Scala Actors 迁移到 Akka 但是我再也找不到那些轻量级 Actors 使用Akka 我不仅需要为Actor创建创建ActorSystem Props 还需要照顾Acto
  • Scala 中用于阻止调用的 Future

    The Akka文档说 you may be tempted to just wrap the blocking call inside a Future and work with that instead but this strate
  • 在 Scala 中反转地图的优雅方法

    目前正在学习Scala 需要反转Map 来进行一些反转值 gt 键查找 我一直在寻找一种简单的方法来做到这一点 但只想到了 Map origMap map kvp gt kvp 2 gt kvp 1 有人有更优雅的方法吗 假设值是唯一的 则
  • 如何在每行中添加行号?

    假设这些是我的数据 Maps and Reduces are two phases of solving a query in HDFS Map is responsible to read data from input location
  • 如果需要,Akka actor 可以从邮箱中删除消息吗?

    例如 如果我想从队列中删除冗余消息 这样当演员收到Connect消息 它应该检查它的邮箱并删除其他Connect消息 以便只进行一个连接而不是多个连接 这样的事情可能吗 是的 您可以将参与者调度程序配置为具有您选择的任何邮箱 因此如果您实现
  • Akka Stream - 根据 Flow 中的元素选择 Sink

    我正在使用 Akka 流创建一个简单的消息传递服务 该服务就像邮件递送一样 其中来自源的元素包括destination and content like case class Message destination String conte
  • 如何不让 Gradle 立即退出 Scala 的 REPL?

    这些简单的线条在build gradle暴露一个repl理想情况下会启动 scala REPL 的任务 点燃并保持活力就是这样 repl 加载后 它立即收到 quit 命令并退出 的重要部分build gradle dependencies
  • 为 Apache Spark 示例运行 Cypher (CAPS)

    我知道这是一个广泛的问题 但这会对neo4j不属于某个领域的用户scala编程 我需要使用Apache Spark 项目的 Cypher https github com opencypher cypher for apache spark
  • 使一个 sbt 配置依赖于另一个配置

    sbt 文档显示了如何仅在项目之间声明依赖关系的示例 但我确信有方法可以声明一个配置依赖于另一个配置 就像测试配置使用编译配置中的类路径一样 如何声明我自己的配置 以便它依赖于编译配置生成的类路径 我更仔细地研究了建议的解决方案 然后又出现
  • Scala案例类使用浅拷贝还是深拷贝?

    case class Person var firstname String lastname String val p1 Person amit shah val p2 p1 copy p1 firstname raghu p1 p2 p
  • 如何在 scala 中的二维数组上使用 contains 方法

    我有一个二维数组 我想检查二维数组内是否存在数组 我努力了 var arr Array Array 2 1 Array 4 3 var contain arr contains Array 4 3 println contain 这应该打印
  • Scala 类型别名破坏了类型兼容性

    我始终相信 如有必要 类型别名总是会扩展为其原始类型 但是 这里有一个麻烦制造者 def a P a Option P type Res List P result type alias Nil Res Replace this line
  • Spark DataFrame 不尊重架构并将所有内容视为字符串

    我面临着一个多年来一直无法克服的问题 我使用的是 Spark 1 4 和 Scala 2 10 我现在无法升级 大型分布式基础设施 我有一个包含几百列的文件 其中只有 2 列是字符串 其余都是长列 我想将此数据转换为标签 特征数据框 我已经
  • 什么时候有2.13的sbt版本?

    我想开发一个sbt插件其依赖项仅适用于斯卡拉2 13 我发现https github com sbt sbt issues 5032 https github com sbt sbt issues 5032这个列表 SBT 0 x 仅在 S
  • 如何强制 Spark 执行代码?

    我如何强制 Spark 执行对 map 的调用 即使它认为由于其惰性求值而不需要执行它 我试过把cache 与地图调用 但这仍然没有解决问题 我的地图方法实际上将结果上传到 HDFS 所以 它并非无用 但 Spark 认为它是无用的 简短回
  • 这是一种在 Akka FSM 中内部监视到第一个状态的转换的方法吗?

    考虑从状态 Idle 开始的 FSM actor startWith Idle IdleData 我想监视到第一个状态的转换 从无状态 I tried onTransition case gt Idle gt Wasn t called 根
  • 单击“发送”按钮事件时,我们可以在哪里获取 xml/元数据格式的表单数据?

    我是一个新的 scala 学习者 作为要求的一部分 我需要将表单数据插入 activemq 队列中以进行提交事件 我尝试调试发送方法代码 以了解单击 FormRunnerActions scala 类中的发送按钮时我们到底在哪里获取 xml
  • 在 Scala 中创建 Java 对象

    我有一个 Java 类 Listings 我在 Java MapReduce 作业中使用它 如下所示 public void map Object key Text value Context context throws IOExcept

随机推荐

  • 调试 Android 应用程序时出现 VMDisconnectedException

    我正在调试我的 Android 应用程序 让它在断点处停止 事实上 执行在断点处停止 但是一旦我跨过一个步骤 然后单步进入 问题就开始了 调试器似乎执行了一步 而不是单步进入函数 只是突出显示下一行 当我按下 跳过 时 会弹出一个消息框 其
  • 定义带有换行符的组织模式宏

    有可能定义一个宏 http orgmode org manual Macro replacement html in an org文件如下 MACRO macroname
  • 包装其元素的 Angular 属性指令

    就像标题所说 我正在尝试创建一个属性指令来包装其父级并允许我在编辑和显示实际模型值之间切换 简而言之
  • django 可以延迟加载模型中的字段吗?

    我的 django 模型之一有一个很大的TextField我经常不需要使用它 有没有办法告诉 django 延迟加载 这个字段 也就是说 除非我明确要求 否则不要费心从数据库中提取它 我浪费了大量的内存和带宽来拉这个TextField每次我
  • 将数据传输到命令行 php 中?

    是否可以使用 unix 管道将数据传输到命令行 php 脚本中 我试过了 gt data php script php 但预期的data没有出现在 argv 有没有办法做到这一点 PHP 可以从标准输入读取 并且还为其提供了一个很好的快捷方
  • 流减少不兼容类型

    我正在尝试创建一个查找器 它采用多个谓词并减少它们 public static
  • 使用外部类的可变参数模板中的参数部分特化可变参数模板内部类是否合法

    考虑代码 include
  • jQuery 如何撤消选择更改

    我有一个选择框 我想在将其更改为特定选项之前添加确认 例子
  • IE 对“这个”的理解

    在此代码中 Firefox 将 this 视为被单击的元素 并通过正确的方式传递 href 属性 IE 似乎认为 this 是 对象窗口 我怎样才能让它在两个浏览器中以相同的方式工作 注意 jQuery 会很不错 但不是这个项目的选择 va
  • 我可以使用 C++ 中的内置类型安全地 new[],然后强制转换指针,然后安全地删除[] 吗?

    在我的代码中 我实际上有以下内容 wchar t buffer new wchar t size bonus irrelevant code here delete reinterpret cast
  • 为什么我的常规应用程序上下文无法加载我的属性文件?

    我正在尝试在我的应用程序中使用 PropertyPlaceholderConfigurer 我的 applicationContext test xml 加载我的属性文件很好 但我的 applicationContext xml 抛出异常
  • Postgresql:日期格式和本地语言输出

    我对 postgresql 有两个问题 第一个是我必须将日期转换为特定格式 例如 2016 年 11 月 4 日星期五 SELECT to char tstamp Day DD month YYYY FROM 这就是结果 https i s
  • PostgreSQL - 获取统计数据

    我需要在我的应用程序中收集一些统计信息 我有一个用户表 tb user 每次新用户访问该应用程序时 都会在此表中添加一条新记录 即每个用户一行 主要领域有id and 日期 小时 用户第一次访问该应用程序的时间戳 tb user id bi
  • iOS 版本的 Flutter 应用程序在启动时崩溃

    我正在开发该应用程序 它运行正常 但后来我确实将 Mac 更新到了 macOS Monterey 12 2 1 并将我的 iPhone 设备更新到了最新的 15 2 和 Xcode 13 0 并使用了最新的 13 2 1 但现在应用程序在启
  • ios推送通知的延迟是多少?

    我想在我的应用程序中添加火警功能 我认为推送通知可能是最好的选择 但如果延迟过大 比如超过10分钟 对于火警来说就没有意义了 那么 假设设备在线 推送通知的延迟是多少 推送通知不可靠 无法保证它们已送达 这一切都取决于苹果 APNS 服务器
  • 使用 PHP 从 HTML 源生成屏幕截图

    我有一个想法 可以创建一个可以动态生成网页的 png 或 jpeg 屏幕截图的网站 最终用户永远不会看到这些页面 但 HTML 会被转换为屏幕截图 最终用户将看到该屏幕截图 我怎样才能开始做这件事呢 我想我正在寻找的是某种 PHP 函数 它
  • QBO API v3 .NET SDK 中的特殊字符问题

    我正在使用 NET SDK 从另一个接受 UTF 8 数据编码的系统导入客户和交易 但在处理特殊字符时遇到了很多麻烦 是否有 a 需要转义哪些字符 如撇号 和 b QBO 中不允许使用哪些字符 如冒号 的完整列表 我在在线文档中所能找到的只
  • 将 div 居中对齐,内容左对齐

    我想要一个以文档为中心的 div div 应该占据所有可以显示内容的空间 并且内容本身应该左对齐 我想要创建的是图像库 行和列居中 当您添加新拇指时 它将向左对齐 Code div div img src http www babybedd
  • 使用 Spotify API 时“解析 JSON 时出错”

    我正在学习 Python 并尝试使用 Spotify Web api 创建播放列表 但收到 http 400 错误 解析 json 时出错 我想这与令牌中不正确的变量类型有关 但我很难调试它 因为我无法找到一种方法来查看原始格式的发布请求
  • 如何处理响应超时?

    在 akka http 路由中我可以返回Future作为隐式转换为的响应ToResponseMarshaller 有什么方法可以处理这个未来的超时吗 或者路由级别的连接超时 或者一种方法是使用Await 功能 现在客户可以永远等待响应 co