簡體   English   中英

多個 oracle 表的單個 kafka 主題

[英]Single kafka topic for multiple oracle tables

我的要求是通過 Kafka 將 200+ oracle 表加載到 200+ mongo collections 中。 我想創建單個 JDBC 源連接器、200 多個主題、200 多個接收器連接器。 但是 confluent 團隊表示,kafka 可能無法處理這么多主題和接收連接器。 他們要求我鞏固。 如何將 200+ oracle 表寫入單個主題並寫入 mongo 集合? 你能幫我么?

除非您的問題中缺少某些特定上下文,否則 Kafka 不會處理 200 多個主題和接收器連接器的建議聽起來不正確。

您應該將每個邏輯表 map 分配給一個 Kafka 主題。 我認為將多個表合並到一個主題中的唯一原因是它是否是同一個邏輯實體(例如,跨物理位置(例如隔離倉庫)分片的表)。 將多種消息類型放在一個主題中還有其他原因,但它們很可能不適用於這里。

根據您需要管理 Kafka Connect 工作集群規模的數據量,這可以通過分布式模式輕松完成,您只需根據需要橫向擴展以應對工作負載。


免責聲明:我為 Confluent 工作;)

我在這里猜測 Confluent 可能會建議考慮您的 Kafka 集群大小的方法,否則,您所做的事情是有道理的。

但是,如果您只想使用單個主題,您可以嘗試利用 kafka 標頭,它可以保存事件的表名。

Sugaan,請按要求找到示例代碼。

制作人:-

  ProducerRecord<String, JsonNode> record = new ProducerRecord<>(topic, key, value);
  record.headers().add("test", "test1".getBytes());

  producer.send(record

消費者:-

  final ConsumerRecords<String, byte[]> consumerRecords = consumer.poll(Duration.ofMillis(100000));
                  
  for (ConsumerRecord<String, byte[]> record : consumerRecords) {
      record.headers().forEach(
              (header -> System.out.println(header.key() + "  " + header.value())));
  }

如果您有任何其他問題,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM