Пример #1
0
        public KinesisProducer(IMessageManager ipc_manager, ISocketFactory socket_factory, string region, KPLNETConfiguration config, AwsCredentialsProvider creds_provider, AwsCredentialsProvider metrics_creds_provider, Executor executor)
        {
            region_         = region;
            config_         = config;
            socket_factory_ = socket_factory;
            executor_       = executor;
            ipc_manager_    = ipc_manager;
            creds_chain_    = AwsCredentialsProviderChain.create(new List <AwsCredentialsProvider> {
                creds_provider
            });
            metrics_creds_chain_ = metrics_creds_provider == creds_provider ? creds_chain_ : AwsCredentialsProviderChain.create(new List <AwsCredentialsProvider> {
                metrics_creds_provider
            });
            pipelines_ = new ConcurrentDictionary <string, Pipeline>();
            shutdown_  = false;

            create_metrics_manager();

            if (config.clientType == KPLNETInterface.ClientType.SocketClient)
            {
                create_http_client();
            }
            else
            {
                create_kinesis_client();
            }

            report_outstanding();

            message_drainer_ = new Thread(() => { drain_messages(); });
            message_drainer_.Start();
        }
Пример #2
0
        void on_set_credentials(SetCredentials set_creds)
        {
            // If the metrics_creds_chain_ is pointing to the same instance as the regular creds_chain_, and we receive a new set of creds just for metrics, we need to create a new instance of AwsCredentialsProviderChain for metrics_creds_chain_ to point to. Otherwise we'll wrongly override the regular credentials when setting the metrics credentials.
            if (set_creds.ForMetrics && metrics_creds_chain_ == creds_chain_)
            {
                metrics_creds_chain_ = new AwsCredentialsProviderChain();
            }

            AwsCredentialsProviderChain chain = set_creds.ForMetrics ? metrics_creds_chain_ : creds_chain_;

            chain.reset
            (
                new List <AwsCredentialsProvider> {
                new BasicAwsCredentialsProvider
                (
                    set_creds.Credentials.Akid,
                    set_creds.Credentials.SecretKey,
                    set_creds.Credentials.Token
                )
            }
            );
        }