我想将apachekafka用于类似事件源的场景。我正在寻找一种方法来模拟写入日志流时的乐观并发。i、 例如,如果我试图写一个新的日志条目,这个条目是基于之前的时间戳t的知识创建的,我希望在我开始写我的事件之前,如果其他人同时更新了流(到时间戳t'),我会得到一个异常。有没有一种方法可以实现与apachekafka的乐观并发?
u91tlkcl1#
我认为你不应该试图在生产者那里解决这个问题,在消费者那里解决这个问题。我假设t'>t(即t'比t晚),但是 message(T') 是以前写的 message(T) . 你应该做以下事情确保这两条消息最终都在同一个分区中,要么给它们相同的密钥,要么执行自己的路由,要么只使用一个分区。将时间戳作为消息的一部分。在消费者中丢弃可以追溯到时间的消息。什么时候 message(T) 到了消费者那里,它就会回到过去,因为 message(T') 已经处理过了,所以 message(T) 按要求放置。
message(T')
message(T)
1条答案
按热度按时间u91tlkcl1#
我认为你不应该试图在生产者那里解决这个问题,在消费者那里解决这个问题。我假设t'>t(即t'比t晚),但是
message(T')
是以前写的message(T)
. 你应该做以下事情确保这两条消息最终都在同一个分区中,要么给它们相同的密钥,要么执行自己的路由,要么只使用一个分区。
将时间戳作为消息的一部分。
在消费者中丢弃可以追溯到时间的消息。
什么时候
message(T)
到了消费者那里,它就会回到过去,因为message(T')
已经处理过了,所以message(T)
按要求放置。