Exemple #1
0
        /// <summary>
        /// Get item using Amazon Dynamo Accelerator (DAX), to use this function, you have to install the lambda at the
        /// same VPC as DAX, then you could access to the Lambda using EC2 instance
        /// </summary>
        /// <param name="contractId"></param>
        /// <returns></returns>
        public Dictionary <string, AttributeValue> GetDAX(string contractId)
        {
            DaxClientConfig  config  = new DaxClientConfig("assetcluster.ofc1zu.clustercfg.dax.usw2.cache.amazonaws.com", 8111);
            ClusterDaxClient client  = new ClusterDaxClient(config);
            GetItemRequest   request = new GetItemRequest()
            {
                TableName = AssetTableName,
                Key       = new Dictionary <string, AttributeValue>()
                {
                    {
                        "ContractId", new AttributeValue()
                        {
                            S = contractId
                        }
                    }
                }
            };

            var result = client.GetItemAsync(request);

            result.Wait();

            if (result.IsCompletedSuccessfully)
            {
                return(result.Result.Item);
            }

            throw new Exception("Error reading asset table", result.Exception);
        }
        public static async Task Main(string[] args)
        {
            string endpointUri = args[0];

            Console.WriteLine($"Using DAX client - endpointUri={endpointUri}");

            var clientConfig = new DaxClientConfig(endpointUri)
            {
                AwsCredentials = FallbackCredentialsFactory.GetCredentials()
            };
            var client = new ClusterDaxClient(clientConfig);

            var tableName = "TryDaxTable";

            var pk         = 1;
            var sk         = 10;
            var iterations = 5;

            var startTime = System.DateTime.Now;

            for (var i = 0; i < iterations; i++)
            {
                for (var ipk = 1; ipk <= pk; ipk++)
                {
                    for (var isk = 1; isk <= sk; isk++)
                    {
                        var request = new GetItemRequest()
                        {
                            TableName = tableName,
                            Key       = new Dictionary <string, AttributeValue>()
                            {
                                { "pk", new AttributeValue {
                                      N = ipk.ToString()
                                  } },
                                { "sk", new AttributeValue {
                                      N = isk.ToString()
                                  } }
                            }
                        };
                        var response = await client.GetItemAsync(request);

                        Console.WriteLine($"GetItem succeeded for pk: {ipk},sk: {isk}");
                    }
                }
            }

            var      endTime  = DateTime.Now;
            TimeSpan timeSpan = endTime - startTime;

            Console.WriteLine($"Total time: {timeSpan.TotalMilliseconds} milliseconds");

            Console.WriteLine("Hit <enter> to continue...");
            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            String hostName = args[0].Split(':')[0];
            int    port     = Int32.Parse(args[0].Split(':')[1]);

            Console.WriteLine("Using DAX client - hostname=" + hostName + ", port=" + port);

            var clientConfig = new DaxClientConfig(hostName, port)
            {
                AwsCredentials = FallbackCredentialsFactory.GetCredentials()
            };
            var client = new ClusterDaxClient(clientConfig);

            var tableName = "TryDaxTable";

            var pk         = 1;
            var sk         = 10;
            var iterations = 5;

            var startTime = DateTime.Now;

            for (var i = 0; i < iterations; i++)
            {
                for (var ipk = 1; ipk <= pk; ipk++)
                {
                    for (var isk = 1; isk <= sk; isk++)
                    {
                        var request = new GetItemRequest()
                        {
                            TableName = tableName,
                            Key       = new Dictionary <string, AttributeValue>()
                            {
                                { "pk", new AttributeValue {
                                      N = ipk.ToString()
                                  } },
                                { "sk", new AttributeValue {
                                      N = isk.ToString()
                                  } }
                            }
                        };
                        var response = client.GetItemAsync(request).Result;
                        Console.WriteLine("GetItem succeeded for pk: " + ipk + ", sk: " + isk);
                    }
                }
            }

            var      endTime  = DateTime.Now;
            TimeSpan timeSpan = endTime - startTime;

            Console.WriteLine("Total time: " + (int)timeSpan.TotalMilliseconds + " milliseconds");

            Console.WriteLine("Hit <enter> to continue...");
            Console.ReadLine();
        }