Kinesis:关闭工作人员的最佳/安全方法是什么?

2023-12-29

我正在使用AWSKinesis 客户端库 https://github.com/awslabs/amazon-kinesis-client/blob/master/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/Worker.java.

我需要一种在部署期间关闭 Kinesis Worker 线程的方法,以便我在检查点停止而不是在中间停止processRecords().

我看到关闭布尔值存在于Worker.java但它是私有的。

我需要的原因是检查点和幂等性对我来说至关重要,我不想在批次中间终止该进程。

[EDIT]

感谢@CaptainMurphy,我注意到Worker.java暴露shutdown()安全关闭worker和的方法LeaseCoordinator。它不做的是调用shutdown()任务在IRecordProcessor。它突然终止IRecordProcessor不用担心国家。

我确实理解 KCL 不能保证检查点之间的幂等性,开发人员应该使设计具有容错能力,但我认为IRecordProcessor应先正确关闭LeaseCoordinator不管怎样都会停止。


自版本以来1.7.1 https://github.com/awslabs/amazon-kinesis-client/releases/tag/v1.7.1(请参阅下面的注释)应用程序可以请求正常关闭,并且实现 IShutdownNotificationAware 的记录处理器将有机会在关闭之前进行检查点。

  • 确保记录处理器实现IShutdownNotificationAware接口除了其中之一IRecordProcessor接口。调用检查点shutdownRequested(IRecordProcessorCheckpointer checkpointer)方法。注意 -shutdownIRecordProcessor 的方法应该调用检查点only如果关闭原因为“终止”
  • 在应用程序关闭时启动工作进程关闭进程

    Future<Void> shutdown = worker.requestShutdown();
    shutdown.get(); // wait for shutdown complete
    

PS:Kinesis客户端之前版本1.7.4 https://github.com/awslabs/amazon-kinesis-client/releases/tag/v1.7.4包含阻止正确关闭的竞争条件。因此请使用 1.7.4 或更高版本。

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

Kinesis:关闭工作人员的最佳/安全方法是什么? 的相关文章

  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • 如何解决 onEditCommit 事件上的类型不匹配错误?

    我在 Fxml 中使用 onEditCommit 事件在用户编辑数据后检索数据 FXML 代码
  • MI设备中即使应用程序被杀死,如何运行后台服务

    您好 我正在使用 alaram 管理器运行后台服务 它工作正常 但对于某些 mi 设备 后台服务无法工作 我使用了服务 但它无法工作 如何在 mi 中运行我的后台服务 MI UI有自己的安全选项 所以你需要的不仅仅是上面提到的粘性服务 你需
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • 所有junit测试后的清理

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

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • SNS和SQS访问问题,收不到消息

    我已经经历过AWS SNS SQS 订阅 https docs aws amazon com sns latest dg sns send message to sqs cross account html多次说明 并浏览了一些不同的博客和
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 如何在android sdk上使用PowerMock

    我想为我的 android 项目编写一些单元测试和仪器测试 然而 我遇到了一个困扰我一段时间的问题 我需要模拟静态方法并伪造返回值来测试项目 经过一些论坛的调查 唯一的方法是使用PowerMock来模拟静态方法 这是我的 gradle 的一
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这

随机推荐

  • 在 Magento ORM 中使用布尔字段

    我正在为我的自定义实体开发后端编辑页面 我几乎一切都正常工作 包括保存一堆不同的文本字段 但是 当尝试设置布尔字段的值时 我遇到了问题 我努力了 landingPage gt setEnabled 1 landingPage gt setE
  • 在域模型之间映射数据的模式

    这是我最近需要做的一件常见的事情 我正在寻找任何常见的模式来使这变得更容易一些 这一切的主要要点是我有一些数据模型 它们被建模来满足 ORM 并纯粹对对象进行 CRUD 操作 这些模型目前通过存储库 工厂公开 取决于其 C 还是 RUD 然
  • Matplotlib动画,移动方块

    我正在从文本文件加载 x y 坐标和偏航角 这些坐标是正方形中间的坐标 yaw 是正方形与 x 轴的角度 在我的文本文件中 坐标正在变化 我想制作一个动画 其中方块将移动 遵循文件中的坐标 并具有精确的偏航角 一个动画刻度应该代表一个方块移
  • 如何禁用一条指令的中断?

    有没有其他方法可以在持续时间内禁用中断只有一条指令 in x86 questions tagged x86比使用CLI操作说明 是的 正在加载SS with a MOV将禁止下一条指令的外部中断 指令集参考是这样说的 使用 MOV 指令加载
  • ODE45 和 Runge-Kutta 方法与解析解的绝对误差比较

    如果有人可以帮助解决以下问题 我将不胜感激 我有以下常微分方程 dr dt 4 exp 0 8 t 0 5 r r 0 2 t 0 1 1 我用两种不同的方式解决了 1 借助于龙格 库塔法 第四阶 并通过ode45在Matlab中 我将这两
  • Oracle:将子查询中的多个结果合并为单个逗号分隔值[重复]

    这个问题在这里已经有答案了 我正在尝试将单列子查询转换为命令分隔的子查询VARCHAR 键入的值列表 这与这个问题 https stackoverflow com questions 111341 combine multiple resu
  • 实体框架自连接[重复]

    这个问题在这里已经有答案了 我使用 Entity Framework 6 和 Code First 并且有一个具有以下结构的表 public class Item Key public int ItemId get set Required
  • VSTS - 在发布期间删除以前的部署

    我正在从事一个 Azure 项目 该项目只能使用 Visual Studio CI 中的 ARM 模板进行部署 并且我们只有对 Azure 门户的读取访问权限 目前我收到以下错误并且无法发布 我也无法从 Portal 中删除部署 因为我只有
  • 使用 PHP 更新 XML 文件

    使用 PHP 更新 XML 标记中的单个属性而不重写和保存文件的最简单方法是什么 有没有办法只使用常规的 DOM 东西来做到这一点 如果您的服务器上有 PHP5 您可以尝试 string
  • 如何将整个Access数据库导出到SQL Server? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我刚刚有了一个可爱的 Access 数据库 所以我想做的第一件事是将其转移到普通的数据库管理系统 sqlexpress 但是唯一的解决
  • 如何在 Visual Studio 中以 NT AUTHORITY\SYSTEM 身份进行调试?

    我正在尝试以 NT AUTHORITY SYSTEM 身份进行调试 我尝试使用以下问题中描述的方法 在 Visual Studio 中调试时以不同用户运行 https stackoverflow com questions 1287099
  • 当我将一个字典分配给另一个变量时,为什么 Python 会更新这两个字典? [复制]

    这个问题在这里已经有答案了 使用词典时如何避免以下情况 a b 1 c a c update b 2 print a b 2 print c b 2 通过使用字典copy 方法 就像这样 gt gt gt a b 1 gt gt gt c
  • Sybase IN 和 OUT 参数

    我对 Sybase JDBC 驱动程序如何处理混合存储过程感到非常着迷 IN and OUT参数 查看这个简单的存储过程 CREATE OR REPLACE PROCEDURE p IN i1 INT OUT o1 INT IN i2 IN
  • EF 每个层次结构表映射

    在尝试规范化数据库模式并将其映射到实体框架中时 我发现最终可能会出现一堆查找表 它们最终将只包含键和值对 我想将它们合并到一张表中 该表基本上有两列 键 和 值 例如 我希望能够使 Addresses AddressType 和 Perso
  • 如何避免使用大向量初始化的“编译器限制:编译器堆栈溢出”?

    在我的单元测试中 我收到以下编译器错误 The error message indicates as follows fatal error C1063 compiler limit compiler stack overflow 这是由一
  • Array.map 似乎不适用于未初始化的数组[重复]

    这个问题在这里已经有答案了 我正在尝试使用映射函数在未初始化的数组上设置默认值 但它似乎不起作用 关于如何设置默认值有什么想法吗 考虑一下我在 Chrome 控制台中尝试过的这段代码片段 gt var N 10 gt var x new A
  • 当任何应用程序使用我的库时,如何确保我的库的“v7 appcompat 或支持”不存在冲突?

    我有一个 android 库com android support appcompat v7 23 0 1gradle 中的依赖 说出任何不同版本的应用程序com android support appcompat v7 23 3 0位于该
  • 如何使用 PHP 构建动态变量?

    我正在尝试在 PHP 中构建一个动态变量 尽管在 StackOverflow 上查看了有关此事的许多问题 但我仍然感到困惑 变量是我一直不太理解的东西 希望这里有人能指出我正确的方向 data query gt section child
  • 循环遍历所有输入框并清理它们

    如何使用 javascript 循环遍历页面上的所有输入框并清除其中的数据 使它们全部为空 试试这个代码 input val 一切都在循环input元素并将它们的值设置为空字符串 这是一个演示 http jsfiddle net maqVn
  • Kinesis:关闭工作人员的最佳/安全方法是什么?

    我正在使用AWSKinesis 客户端库 https github com awslabs amazon kinesis client blob master src main java com amazonaws services kin