我在這里。在遵循代碼的同時。我想出了兩個問題密鑰和偏移量是否相同?根據Google的說法,偏移量:一個Kafka主題會在存儲它們的一組分布式分區中接收消息。每個分區都按順序維護已收到的消息,其中它們由偏移量(也稱為位置)標識。似乎兩者對我來說都非常相似。由于偏移量在分區中保持唯一的消息:生產者根據記錄的鍵將記錄發送到分區為生產者選擇鍵/偏移的最佳方法是什么?對于我上面提供的示例,他們選擇了時間戳作為Key和offset。這始終是最好的建議嗎? class IRCMessageListener extends IRCEventAdapter { @Override public void onPrivmsg(String channel, IRCUser u, String msg) { IRCMessage event = new IRCMessage(channel, u, msg); //FIXME kafka round robin default partitioner seems to always publish to partition 0 only (?) long ts = event.getInt64("timestamp"); Map<String, ?> srcOffset = Collections.singletonMap(TIMESTAMP_FIELD, ts); Map<String, ?> srcPartition = Collections.singletonMap(CHANNEL_FIELD, channel); SourceRecord record = new SourceRecord(srcPartition, srcOffset, topic, KEY_SCHEMA, ts, IRCMessage.SCHEMA, event); queue.offer(record); }因為我實際上是在嘗試創建自定義的Kafka連接器,以從3rd Party WebSocket API獲取數據。API發送給定鍵值的實時數據流消息。所以我想到了將那個Key用作我的PartitionKey以及Offset。但是需要確保我對自己的想法是正確的。
2 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
密鑰是可選的元數據,可以與Kafka消息一起發送,默認情況下,它用于將消息路由到特定分區。例如,如果你發送消息米與鍵?,到一個主題mytopic有p分區,然后米進入到分區哈希(?)%p在mytopic。它與分區的偏移量沒有任何關系。使用者使用偏移量來跟蹤分區中最后讀取的消息的位置。在您的情況下,如果時間戳是相當隨機分布的,那很好,否則在將其用作鍵時可能會導致分區不平衡。
添加回答
舉報
0/150
提交
取消