我有一个Kafka连接器,它使用如下方式:
SELECT CAST ( id as VARCHAR) as key_id, id ...
FROM table1
JOIN (SELECT id as tID FROM table1 t WHERE t.id = 87002) v
ON v.tID = id
如果我使用orderbyid对db执行,我将按照我期望的顺序使用以下id获取记录
322633
324066
324084
324107
我已指定接头拉力递增,因此接头固定以下内容:
WHERE id > ? ORDER BY id ASC
这就是我困惑的地方。在连接器写入的流中,记录以不同的顺序显示!他们在里面
322633
324084
324107
324066 (huh!!!?)
任何有助于理解这种行为的人都会很高兴。
1条答案
按热度按时间cgvd09ve1#
kafka是一个分布式消息传递系统,因此它甚至可以按顺序从源数据库获取消息,但是消息将根据定义的密钥分布在主题的多个分区上。Kafka保证维持每个分区的秩序,而不是跨越分区。
因此,消费者可以从主题中以任何顺序获得消费消息在消费者方面没有保证的顺序。
如果您严格地希望维护顺序,那么可以使用单个分区主题,但在这种情况下,您可能会失去并行性。