Mongodb 用于多个oracle表的单个kafka主题

Mongodb 用于多个oracle表的单个kafka主题,mongodb,oracle,apache-kafka,confluent-platform,Mongodb,Oracle,Apache Kafka,Confluent Platform,我的要求是通过Kafka将200多个oracle表加载到200多个mongo集合中。我想创建一个JDBC源连接器,200多个主题,200多个接收器连接器。但confluent团队表示,卡夫卡可能无法处理这么多的话题,也无法解决这些问题。他们要我合并。如何将200多个oracle表写入单个主题并写入mongo集合?你能帮我吗?除非你的问题中缺少某些特定的上下文,否则卡夫卡不会处理200多个主题和接收器连接器的建议听起来是不正确的 您应该将每个逻辑表映射到卡夫卡主题。我认为将多个表合并到一个主题中的

我的要求是通过Kafka将200多个oracle表加载到200多个mongo集合中。我想创建一个JDBC源连接器,200多个主题,200多个接收器连接器。但confluent团队表示,卡夫卡可能无法处理这么多的话题,也无法解决这些问题。他们要我合并。如何将200多个oracle表写入单个主题并写入mongo集合?你能帮我吗?

除非你的问题中缺少某些特定的上下文,否则卡夫卡不会处理200多个主题和接收器连接器的建议听起来是不正确的

您应该将每个逻辑表映射到卡夫卡主题。我认为将多个表合并到一个主题中的唯一原因是,它是否是同一个逻辑实体(例如,在物理位置(如隔离仓库)上分片的表)。在一个主题中放置多个消息类型有多种方法,但在这里可能不适用

根据数据量的不同,您需要管理Kafka Connect worker群集的规模,但使用分布式模式很容易做到这一点,您只需按需要横向扩展以应付工作负载



免责声明:我为Confluent工作;)

我猜Confluent可能会建议考虑卡夫卡集群大小的方法,否则,您所做的是有意义的

但是,如果只想使用单个主题,可以尝试利用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())));
  }
ProducerRecord记录=新的ProducerRecord(主题、键、值);
record.headers().add(“test”、“test1.getBytes());
制作人发送(录音)
消费者:-

  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())));
  }
final ConsumerRecords ConsumerRecords=consumer.poll(持续时间为100000毫秒);
用于(消费记录记录:消费记录){
record.headers().forEach(
(header->System.out.println(header.key()+“”+header.value());
}

如果您有任何其他问题,请告诉我。

谢谢您的意见。我也有同样的想法和设计。是confluent团队要求我们整合连接器。谢谢Surendra。如果可能,请您提供一个示例……请参阅上面的示例代码。