我有一个flink作业,从kafka读取数据,从redis读取一些数据,然后将聚合的窗口数据写入redis接收器(redis写入操作实际上是调用加载到redis中的lua脚本,该脚本会增加现有值,因此我只能在此处增加而不能更新)。
问题是,当我停止作业(维护、代码更改等)时,即使使用保存点,我也会向redis写入重复数据,或者在恢复时丢失一些数据,因为据我所知,redis sink在语义方面没有任何保证(准确/至少/最多一次)。
问题是,是否存在某种关闭信号,允许我彻底关闭作业,以保证语义只出现一次?
换句话说,我想要的是:
这可能吗?欢迎任何关于如何处理停机(计划/计划外)的其他想法。
自版本1.2以来,Flink有一个cancel with savepoint操作,可从CLI和rest API中使用。查看文档和拉取请求。
问题内容: 我认为SpringBoot项目需要很长时间才能加载。这可能是因为SpringBoot正在为您配置组件,您甚至可能不需要其中的一些组件。最明显的事情是从类路径中删除不必要的依赖关系。但是,这还不够。 有没有办法找出SpringBoot为您配置的模块,以选择不需要的模块并禁用它们? 总的来说,还有什么可以做以加快SpringBoot应用程序的启动时间吗? 问题答案: 我可以告诉你,我通过S
问题内容: 我在程序中添加了以下代码: 但是,我没有看到该消息。附加信息:我正在Java 7的Netbeans IDE内部运行该程序。 编辑:我忘了补充说,有一个使程序保持活动状态的全局线程。我通过按Netbeans右下角的[x]来关闭它。 问题答案: JVM可以有序或突然关闭。关闭挂钩会运行以有序关闭:当最后一个线程终止时,有人呼叫或通过其他平台特定的方式(例如,按Ctrl-C)。 Shutdo
我已经在树莓派7英寸上安装了tarantool,并希望尽量减少与硬盘(sd卡)的交互。有什么简单的方法可以做到这一点。hdd的真正用法是什么?
问题内容: 我是Java的初学者,也是我的一项工作。我必须做数据库操作。我有用于将数据插入数据库的Java代码,它工作正常。 我的问题是每次代码运行时,我的代码都必须创建一个数据库连接和准备好的语句对象,据我所知,这是一项昂贵的操作。 有什么方法可以保持与数据库的单个连接,并使用该连接来执行数据库工作? 问题答案: 您可以像这样使用设计模式Singleton Connection: 1-创建一个类
目前,我在应用程序中使用guava EventBus方法。侦听器尝试做一些工作,如果失败,事件应该返回总线并重新发送 我的问题是:如果我的应用程序正在关闭(执行关闭),该怎么办?它会在总线中发送剩余的事件吗? 我正在寻找一些方法,例如在ActiveMQ中实现关闭how 代理是否应该安装一个关闭挂钩,以便在JVM终止时正确关闭自己 不幸的是,我没有在EventBus番石榴中找到类似的东西。
我有一个Spring启动应用程序在负载均衡器后面的两台服务器上运行。 我定义了一个关闭钩子,它将应用程序中的/healthcheckendpoint设置为返回404错误,等待30秒以完成所有操作,然后停止JVM。负载平衡器被配置为在看到404错误时将服务器置于维护模式。(这与“停机”状态不同——允许在维护模式下完成飞行中的连接) 问题是负载平衡器从未看到这些404响应。相反,它会拒绝第4层TCP连