我在這里。在遵循代碼的同時。我想出了兩個問題密鑰和偏移量是否相同?根據(jù)Google的說法,偏移量:一個Kafka主題會在存儲它們的一組分布式分區(qū)中接收消息。每個分區(qū)都按順序維護已收到的消息,其中它們由偏移量(也稱為位置)標識。似乎兩者對我來說都非常相似。由于偏移量在分區(qū)中保持唯一的消息:生產(chǎn)者根據(jù)記錄的鍵將記錄發(fā)送到分區(qū)為生產(chǎn)者選擇鍵/偏移的最佳方法是什么?對于我上面提供的示例,他們選擇了時間戳作為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); }因為我實際上是在嘗試創(chuàng)建自定義的Kafka連接器,以從3rd Party WebSocket API獲取數(shù)據(jù)。API發(fā)送給定鍵值的實時數(shù)據(jù)流消息。所以我想到了將那個Key用作我的PartitionKey以及Offset。但是需要確保我對自己的想法是正確的。
2 回答

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