Пример #1
0
        public IEventSink CreateInstance(string sinkType, IPlugInContext context)
        {
            IConfiguration config = context.Configuration;
            ILogger        logger = context.Logger;

            switch (sinkType.ToLower())
            {
            case CLOUD_WATCH_LOG:
            case CLOUD_WATCH_LOG_EMF:
                return(new CloudWatchLogsSink(context, AWSUtilities.CreateAWSClient <AmazonCloudWatchLogsClient>(context)));

            case KINESIS_FIREHOSE:
                var    firehoseSink   = new KinesisFirehoseSink(context, AWSUtilities.CreateAWSClient <AmazonKinesisFirehoseClient>(context));
                string combineRecords = config["CombineRecords"];
                if (!string.IsNullOrWhiteSpace(combineRecords) && bool.TryParse(combineRecords, out bool canCombineRecords))
                {
                    firehoseSink.CanCombineRecords = canCombineRecords;
                }
                return(firehoseSink);

            case KINESIS_STREAM:
                return(new KinesisStreamSink(context, AWSUtilities.CreateAWSClient <AmazonKinesisClient>(context)));

            case CLOUD_WATCH:
                return(new CloudWatchSink(60, context, AWSUtilities.CreateAWSClient <AmazonCloudWatchClient>(context)));

            case TELEMETRICS:
#if DEBUG
                const int TELEMETRICS_DEFAULT_INTERVAL = 60;
#else
                const int TELEMETRICS_DEFAULT_INTERVAL = 3600;
#endif
                //If RedirectToSinkId is specified, we use TelemetryConnector. Otherwise, TelemtryClient
                string redirectToSinkId = config[ConfigConstants.REDIRECT_TO_SINK_ID];
                ITelemetricsClient <HttpResponseMessage> telemetricsClient = null;
                if (string.IsNullOrWhiteSpace(redirectToSinkId))
                {
                    telemetricsClient = TelemetricsClient.Default;
                }
                else
                {
                    telemetricsClient = new TelemetricsSinkConnector(context);
                    context.ContextData[ConfigConstants.TELEMETRY_CONNECTOR] = telemetricsClient;     //Make telemetricsClient available to caller
                }
                return(new TelemetricsSink(TELEMETRICS_DEFAULT_INTERVAL, context, telemetricsClient));

            case FILE_SYSTEM:
                return(new FileSystemEventSink(context));

            default:
                throw new NotImplementedException($"Sink type {sinkType} is not implemented by AWSEventSinkFactory.");
            }
        }
Пример #2
0
 public TelemetricsSink(int defaultInterval, IPlugInContext context, ITelemetricsClient <HttpResponseMessage> telemetricsClient) : base(defaultInterval, context)
 {
     _telemetricsClient = telemetricsClient;
 }