• test INnoVation


    import com.mongodb.client.MongoCollection
    import com.mongodb.client.model.BulkWriteOptions
    import com.mongodb.client.model.InsertOneModel
    import com.mongodb.client.model.WriteModel
    org.apache.nifi.mongodb.MongoDBClientService
    import org.bson.Document
    import groovy.json.*
    import org.apache.nifi.processor.exception.ProcessException;
    import org.apache.nifi.schema.access.SchemaNotFoundException;
    import org.apache.nifi.serialization.MalformedRecordException;
    import com.mongodb.MongoException;
    
    def getCollection(String dataBaseName, String collectionName){
      def mongoService = Client_Service.asControllerService(MongoDBClientService.class)
      return mongoService.getDatabase(dataBaseName).getCollection(collectionName)
    }
    
    
    Main main = new Main()
    def batchSize = Batch_Size.val
    def bypass = Bypass_Validation.val
    def collectionName = Mongo_Collection_Name.val
    def databaseName = Mongo_DataBase_Name.val
    def ordered = Ordered.val
    def writeConcern = Write_Concern.val
    int written = 0
    def mongoCollection = getCollection(databaseName, collectionName)
    
    BulkWriteOptions bulkWriteOptions = new BulkWriteOptions()
    bulkWriteOptions.ordered(ordered)
    bulkWriteOptions.bypassDocumentValidation(bypass)
    
    def json = '[{"val":123456789.976543213456},{"val":987654321.1234567898765},{"val":1234567}]'
    try{
      def jsonHandler = new JsonSlurper()
      List<Map<String, Object>> docs = jsonHandler.parseText(json)
      List<WriteModel<Document>> writeModels = new ArrayList<>()
      WriteModel<Document> writeModel
      docs.forEach(doc -> 
        {
          writeModel = new InsertOneModel<>(new Document(doc))
          writeModels.add(writeModel)
          if (writeModels.size() == batchSize) 
          {
            mongoCollection.bulkWrite(writeModels, bulkWriteOptions)
            written += batchSize
            writeModels = new ArrayList<>()
          }
        }
      )
      if (writeModels.size() > 0) 
      {
        written += writeModels.size()
        mongoCollection.bulkWrite(writeModels, bulkWriteOptions)
      }
    }catch(ProcessException | SchemaNotFoundException | IOException | MalformedRecordException | MongoException e) 
      getLogger().error("PutMongoRecord failed with error:", e);
      session.transfer(flowFile, REL_FAILURE);
      error = true;
    }finally {
      if (!error)
      {
        session.transfer(flowFile, REL_SUCCESS);
        getLogger().info("Written {} records into MongoDB", new Object[]{ written });
      }
    }
    

    31223

    import com.mongodb.MongoClientOptions
    import com.mongodb.MongoClientURI
    import com.mongodb.client.MongoClient
    import com.mongodb.MongoClientOptions.Builder
    import javax.net.ssl.SSLContext
    import org.apache.nifi.ssl.SSLContextService;
    Builder getClientOptions(final SSLContext sslContext) {
        Builder builder = MongoClientOptions.builder();
        builder.sslEnabled(true);
        builder.sslContext(sslContext);
        return builder;
    }
    def URI = MongoURI.value
    SSLContextService sslService = context.getProperty(SSL_CONTEXT_SERVICE).asControllerService(SSLContextService.class);
    MongoClient mongoClient = new MongoClient(new MongoClientURI(URI, getClientOptions(sslContext)));
    
  • 相关阅读:
    exec() show()
    QT记录
    git pull 时速度很慢,感觉几分钟不动
    git 冲突
    自学Go b:Go并发
    Go自学二:语言数据类型
    自学go一: 语言基础语法
    自学go语言第一天
    php 函数-数组函数《一》
    php查看脚本,或某一接口,某一变量所耗费内存大小的方法之memory_get_usage
  • 原文地址:https://www.cnblogs.com/INnoVationv2/p/16718608.html
Copyright © 2020-2023  润新知