Пример #1
0
        private RideResponse recordRide(string rideId, string username, Unicorn unicorn)
        {
            //The client represents a connection to dynamo db's management plane
            using (var client = new Amazon.DynamoDBv2.AmazonDynamoDBClient()){
                //create a data context
                var context = new Amazon.DynamoDBv2.DataModel.DynamoDBContext(client);
                //populate the ride object
                Ride r = new Ride();
                r.Unicorn     = unicorn;
                r.RideId      = rideId;
                r.User        = username;
                r.RequestTime = DateTime.UtcNow;
                r.UnicornName = unicorn.Name;
                //Now persist it to DynamoDB, it is async but here we are waiting so that we know it has completed or failed
                context.SaveAsync(r).GetAwaiter().GetResult();
                //now build the response object
                var rr = new RideResponse();
                rr.ETA         = $"30 seconds";
                rr.Unicorn     = unicorn;
                rr.RideId      = rideId;
                rr.Rider       = username;
                rr.UnicornName = unicorn?.Name;

                return(rr);
            }
        }
Пример #2
0
        public void FromDbEntryPerformance()
        {
            var count           = 10000;
            var options         = new DynamoDBProviderOptions("proto_actor_events", "proto_actor_snapshots");
            var provider        = new DynamoDBProvider(_client, options);
            var dynamoDBContext = new DynamoDBContext(_client);
            var fromDocumentMI  = typeof(DynamoDBContext).GetMethods().First(m => m.Name == "FromDocument" && m.GetParameters().Count() == 1);
            var toDocumentMI    = typeof(DynamoDBContext).GetMethods().First(m => m.Name == "ToDocument" && m.GetParameters().Count() == 1);

            var obj = SomeObj.GetMe();
            var doc = dynamoDBContext.ToDocument(obj);

            var stopwatch = new Stopwatch();

            stopwatch.Start();

            for (var i = 0; i < count; i++)
            {
                // Simulate what provider does
                var dataType = Type.GetType(typeof(SomeObj).AssemblyQualifiedName);
                var data     = dynamoDBContext.FromDocumentDynamic(doc, dataType);
            }

            stopwatch.Stop();
            // Console.WriteLine(String.Format("FromDbEntryPerformance: Total: {0}, Per item: {1}", stopwatch.Elapsed.TotalMilliseconds, stopwatch.Elapsed.TotalMilliseconds / count));
            Assert.True(stopwatch.Elapsed.TotalMilliseconds / count < 0.05);
        }
        public DynamoDBProvider(IAmazonDynamoDB dynamoDBClient, DynamoDBProviderOptions options)
        {
            if (dynamoDBClient == null)
            {
                throw new ArgumentNullException(nameof(dynamoDBClient));
            }

            _options = options ?? throw new ArgumentNullException(nameof(options));

            _dynamoDBContext = new DynamoDBContext(
                dynamoDBClient, new DynamoDBContextConfig {
                Conversion = DynamoDBEntryConversion.V2, ConsistentRead = true
            }
                );
            _eventsTable    = Table.LoadTable(dynamoDBClient, options.EventsTableName, DynamoDBEntryConversion.V2);
            _snapshotsTable = Table.LoadTable(dynamoDBClient, options.SnapshotsTableName, DynamoDBEntryConversion.V2);
        }
Пример #4
0
 public TicketService(ITicketsDatabaseSettings settings)
 {
     _client  = new AmazonDynamoDBClient();
     _context = new Amazon.DynamoDBv2.DataModel.DynamoDBContext(_client);
 }