.NET 调用Nifi rest api创建数据流程

  static void Main(string[] args)
        {
            var config = new Configuration
            {
                BasePath = "http://host:port/nifi-api"
            };
            var apiInstance = new AccessApi(config);
            var username = "root";  // string |  (optional) 
            var password = "root123";  // string |  (optional) 
            var flow = new FlowApi(config);
            var ProcessGroups = new ProcessGroupsApi(config);
            var Processors = new ProcessorsApi(config);
            try
            {
                //CreateConnect(ProcessGroups, "017a102b-82a2-134f-30af-dc3906814840", "017a1024-82a2-134f-354a-8b345ed88fba", "017a100d-82a2-134f-6a20-48ac9f0fa6dd");
                #region 创建ProcessGroup
                ProcessGroupEntity PGE = new ProcessGroupEntity();
                RevisionDTO RD = new RevisionDTO();
                RD.ClientId = Guid.NewGuid().ToString();
                RD.Version = 0;
                ProcessGroupDTO PGD = new ProcessGroupDTO();
                PGD.Name = "Denny Test222";
                PGD.Comments = "Denny First Test Process Group";
                PGE.DisconnectedNodeAcknowledged = false;
                PGE.Revision = RD;
                PGE.Component = PGD;
                //E.Position
                var createPG = ProcessGroups.CreateProcessGroup("root", PGE);
                #endregion

                #region 创建controller Service  给ProcessGroup配置数据库连接
                ControllerServiceEntity CSE = new ControllerServiceEntity();
                ControllerServiceDTO CSD = new ControllerServiceDTO();
                RevisionDTO C_RD = new RevisionDTO();
                BundleDTO CBD = new BundleDTO();
                Dictionary<string, string> DBInfo = new Dictionary<string, string>();
                DBInfo.Add("Database Connection URL", "jdbc:mysql://host:3306/dmp_datainput_db?serverTimezone=GMT%2B8&characterEncoding=UTF-8&useUnicode=true");
                DBInfo.Add("Database Driver Class Name", "com.mysql.jdbc.Driver");
                DBInfo.Add("database-driver-locations", "/opt/nifi/nifi-current/jdbcdriver/mysql-connector-java-8.0.25.jar");
                DBInfo.Add("Database User", "root");
                DBInfo.Add("Password", "root123");
                CBD.Artifact = "nifi-dbcp-service-nar";
                CBD.Group = "org.apache.nifi";
                CBD.Version = "1.13.2";
                CSD.Bundle = CBD;
                CSD.Type = "org.apache.nifi.dbcp.DBCPConnectionPool";
                CSD.Properties = DBInfo;
                CSD.Name = "6B-666";
                C_RD.Version = 0;
                C_RD.ClientId = Guid.NewGuid().ToString();
                CSE.DisconnectedNodeAcknowledged = false;
                CSE.Component = CSD;
                CSE.Revision = C_RD;
                var CS = ProcessGroups.CreateControllerService("017a1041-82a2-134f-a043-52ffbf7e15dc", CSE);
                #endregion

                #region 在指定的ProcessGroup下创建组件-ExecuteSQL
                ProcessorEntity PE = new ProcessorEntity();
                RevisionDTO P_RD = new RevisionDTO();
                P_RD.ClientId = Guid.NewGuid().ToString();
                P_RD.Version = 0;
                ProcessorDTO PD = new ProcessorDTO();
                BundleDTO BD = new BundleDTO();
                ProcessorConfigDTO PCD = new ProcessorConfigDTO();
                PCD.SchedulingPeriod = "70 sec"; // 30 sec or  5 min
                BD.Artifact = "nifi-standard-nar";
                BD.Group = "org.apache.nifi";
                BD.Version = "1.13.2";
                PD.Bundle = BD;
                PD.Name = "ExecuteSQL";
                PD.Type = "org.apache.nifi.processors.standard.ExecuteSQL";
                PD.Config = PCD;
                PE.DisconnectedNodeAcknowledged = false;
                PE.Component = PD;
                PE.Revision = P_RD;
                var createProcess = ProcessGroups.CreateProcessor("017a100d-82a2-134f-6a20-48ac9f0fa6dd", PE);
                #endregion
                #region 在指定的ProcessGroup下创建组件-ConvertAvroToJSON
                ProcessorEntity ConvertJson = new ProcessorEntity();
                ProcessorDTO CTPD = new ProcessorDTO();
                ProcessorConfigDTO CTPCD = new ProcessorConfigDTO();
                BundleDTO CTBD = new BundleDTO();
                RevisionDTO CT_RD = new RevisionDTO();
                List<string> Relationships = new List<string> { "failure" };
                CT_RD.ClientId = Guid.NewGuid().ToString();
                CT_RD.Version = 0;
                CTBD.Artifact = "nifi-avro-nar";
                CTBD.Group = "org.apache.nifi";
                CTBD.Version = "1.13.2";
                CTPD.Name = "ConvertAvroToJSON";
                CTPD.Type = "org.apache.nifi.processors.avro.ConvertAvroToJSON";
                CTPD.Bundle = CTBD;
                CTPCD.AutoTerminatedRelationships = Relationships;
                CTPD.Config = CTPCD;
                ConvertJson.DisconnectedNodeAcknowledged = false;
                ConvertJson.Component = CTPD;
                ConvertJson.Revision = CT_RD;
                var dataJson = ProcessGroups.CreateProcessor("017a100d-82a2-134f-6a20-48ac9f0fa6dd", ConvertJson);
                #endregion

                #region 在指定的ProcessGroup下创建组件-ConvertJSONToSQL
                ProcessorEntity ConvertJson = new ProcessorEntity();
                ProcessorDTO CTPD = new ProcessorDTO();
                ProcessorConfigDTO CTPCD = new ProcessorConfigDTO();
                BundleDTO CTBD = new BundleDTO();
                RevisionDTO CT_RD = new RevisionDTO();
                List<string> Relationships = new List<string> { "failure" };
                CT_RD.ClientId = Guid.NewGuid().ToString();
                CT_RD.Version = 0;
                CTBD.Artifact = "nifi-standard-nar";
                CTBD.Group = "org.apache.nifi";
                CTBD.Version = "1.13.2";
                CTPD.Name = "ConvertJSONToSQL";
                CTPD.Type = "org.apache.nifi.processors.standard.ConvertJSONToSQL";
                CTPD.Bundle = CTBD;
                CTPCD.AutoTerminatedRelationships = Relationships;
                CTPD.Config = CTPCD;
                ConvertJson.DisconnectedNodeAcknowledged = false;
                ConvertJson.Component = CTPD;
                ConvertJson.Revision = CT_RD;
                var dataJson = ProcessGroups.CreateProcessor("017a100d-82a2-134f-6a20-48ac9f0fa6dd", ConvertJson);
                #endregion
                #region 在指定的ProcessGroup下创建组件-PutSQL
                ProcessorEntity PE = new ProcessorEntity();
                RevisionDTO P_RD = new RevisionDTO();
                P_RD.ClientId = Guid.NewGuid().ToString();
                P_RD.Version = 0;
                ProcessorDTO PD = new ProcessorDTO();
                BundleDTO BD = new BundleDTO();
                ProcessorConfigDTO PCD = new ProcessorConfigDTO();
                List<string> Relationships = new List<string> { "failure", "retry" };
                PCD.AutoTerminatedRelationships = Relationships;
                BD.Artifact = "nifi-standard-nar";
                BD.Group = "org.apache.nifi";
                BD.Version = "1.13.2";
                PD.Bundle = BD;
                PD.Name = "PutSQL";
                PD.Type = "org.apache.nifi.processors.standard.PutSQL";
                PD.Config = PCD;
                PE.DisconnectedNodeAcknowledged = false;
                PE.Component = PD;
                PE.Revision = P_RD;
                var createProcess = ProcessGroups.CreateProcessor("017a100d-82a2-134f-6a20-48ac9f0fa6dd", PE);
                #endregion
            }
            catch (Exception e)
            {

            }
        }
        public static void CreateConnect(ProcessGroupsApi ProcessGroups,string Destinationid,string Sourceid,string ProcessGroupid) {
            #region 创建 connections,连接两个组件
            ConnectionEntity CE = new ConnectionEntity();
            ConnectionDTO CD = new ConnectionDTO();
            ConnectableDTO destination = new ConnectableDTO(Destinationid, null, ConnectableDTO.TypeEnum.PROCESSOR, ProcessGroupid);
            ConnectableDTO source = new ConnectableDTO(Sourceid, null, ConnectableDTO.TypeEnum.PROCESSOR, ProcessGroupid);
            List<string> Relationships = new List<string> { "success" };
            RevisionDTO CE_RD = new RevisionDTO();
            CE_RD.ClientId = Guid.NewGuid().ToString();
            CE_RD.Version = 0;
            CD.Destination = destination;
            CD.Source = source;
            CD.SelectedRelationships = Relationships;
            CE.Component = CD;
            CE.DisconnectedNodeAcknowledged = false;
            CE.Revision = CE_RD;
            var Create_connect = ProcessGroups.CreateConnection(ProcessGroupid, CE);
            #endregion
        }

更多文章请扫码关注公众号,有问题的小伙伴也可以在公众号上提出。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值