我想使用Kafka流处理器应用编程接口,并在预定的标点符号函数中每分钟生成一些消息。Kafka流能保证这些消息恰好一次写入输出主题吗?
我知道在Kafka Streams中可以进行一次处理,因为它通过以下操作生成一个事务:
这个概念是否扩展到处理器API中的标点符号或函数,对于这些标点符号或函数,没有需要提交的关联输入消息?
例如,此标点器函数迭代键值状态存储中的项。每个商品都会从商店中删除并转发到下游:
override def punctuate(timestamp: Long) : Unit =
store.all.asScala.foreach { keyValue =>
store.delete(keyValue.key)
context.forward(keyValue.key, keyValue.value)
}
存储区中的每条消息都应该在输出主题上出现一次,即使在处理器出现故障并重新启动的情况下也是如此。
假设存储是持久的;它有一个Kafka变化日志主题的支持。标点器每分钟都安排在墙上的时钟时间。我已经配置了处理。保证=在我的配置中只_一次
。
如果你使用标点符号,语义也只适用一次。
在后台,使用状态存储就要写入changelog主题(甚至删除——使用一些键和null
value编写消息)
在您的用例中,Kafka Streams将从某个输入主题读取消息,并写入输出主题和某个变更日志主题(状态存储上的操作)。
如果您在Kafka Streams中只启用一次,它将在事务模式下工作。使用事务-原子多分区写入-Kafka Streams确保,当执行偏移提交时,结果被写入输出主题,状态存储也被Flink到代理上的更改日志主题。上述操作是原子的,所以如果其中一个失败,应用程序将从以前的偏移位置重新处理消息。所有这些都将工作,因为处理器::进程和Punctuator::标点符号(...)在特定分区的单个线程中执行。
更多详情请参见:
>
王国章的博客文章在合流页面:https://www.confluent.io/blog/enabling-exactly-kafka-streams-有一节:<代码>Kafka流如何保证精确一次处理 。
原则 中文语句的标点符号,均应该采取全角符号,这样可以保证视觉的一致。 如果整句为英文,则该句使用英文/半角标点。 句号、问号、叹号、逗号、顿号、分号和冒号不得出现在一行之首。 句号 中文语句中的结尾处应该用全角句号(。)。 句子末尾用括号加注时,句号应在括号之外。 错误:关于文件的输出,请参照第 1.3 节(见第 26 页。) 正确:关于文件的输出,请参照第 1.3 节(见第 26 页)。 逗号
我试图在AMPL中编写一个带有库存约束的周期性车辆路径问题。我想动态添加subour约束。为了做到这一点,我受到了TSP公式的启发: https://groups.google.com/d/msg/ampl/mVsFg4mAI1c/ZdfRHHRijfUJ 然而,我无法在我的模型中消除副标题。我在模型文件中使用了以下内容。 我添加了StationUsed变量,因为我的问题与TSP不同,不必在每个时
我在转换器上创建了一个定时标点器,并将其定期运行(使用kafka v2.1.0)。每次我接受一个特定的密钥时,我都会创建一个这样的新密钥 我的问题是,我创建的所有这些标点符号都经常运行,我找不到取消它们的方法。我在互联网上找到了一个片段来使用 但不幸的是,这似乎只取消了最新创建的标点符号。 我编辑我的帖子只是为了进一步了解我的方法,以及这与沃兹尼亚的评论之间的关系。所以我的方法非常类似,只是使用一
谷歌云语音转文本和亚马逊转录都提供标点符号和单词时间戳。我可以得到标点符号时间戳吗?具体来说,我想要分句时间戳(句号、问号、感叹号),例如0:33秒、1:01、1:23、1:49、2:05等。 我想我可以使用谷歌或AWS用标点符号转录一个文件,然后将抄本分解成句子,然后为每个句子做单词时间戳。如果我可以为设置一个参数,这将更容易(对于一个包含500个句子的文件来说,大约是计算机时间的1/500)。
When considering portability between databases, another important decision is selecting the identifier generation stratagy you want to use. Originally Hibernate provided the native generator for this
为什么使用运算符语法调用一元时会收到错误消息?如果我使用函数语法调用它,则可以。实时演示。