Ejemplo n.º 1
0
        public async Task Run(
            [ServiceBusTrigger("eventstream", Connection = "ServiceBusConnection")]
            string myQueueItem,
            Int32 deliveryCount,
            DateTime enqueuedTimeUtc,
            string messageId,
            ILogger log)
        {
            logger = log;
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
            log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
            log.LogInformation($"DeliveryCount={deliveryCount}");
            log.LogInformation($"MessageId={messageId}");

            var @event = EventConvert.Deserialize(myQueueItem);

            switch (@event)
            {
            case BankAccountCreatedEvent bankAccountCreatedEvent:
                log.LogInformation("Received BankAccountCreatedEvent event on message bus.");
                await HandleBankAccountCreatedEvent(bankAccountCreatedEvent);

                break;

            case DepositMadeEvent depositMadeEvent:
                log.LogInformation("Received DepositMadeEvent event on message bus.");
                await HandleDepositMadeEvent(depositMadeEvent);

                break;

            default:
                log.LogInformation("Received unknown event type.");
                break;
            }
        }
Ejemplo n.º 2
0
        public async Task <List <Event> > GetEvents(Guid entityId)
        {
            var events = new List <Event>();

            using (var setIterator = container.GetItemLinqQueryable <Event>()
                                     .Where(@event => @event.AggregateRootId == entityId)
                                     .OrderBy(@event => @event.Version)
                                     .ToStreamIterator())
            {
                while (setIterator.HasMoreResults)
                {
                    using ResponseMessage response = await setIterator.ReadNextAsync();

                    response.EnsureSuccessStatusCode();

                    using StreamReader sr    = new StreamReader(response.Content);
                    using JsonTextReader jtr = new JsonTextReader(sr);

                    var jsonSerializer = new JsonSerializer();
                    var json           = jsonSerializer.Deserialize <JObject>(jtr);
                    var array          = (JArray)json.GetValue("Documents");

                    foreach (var item in array)
                    {
                        var @event = EventConvert.Deserialize(item.ToString());
                        events.Add(@event);
                    }
                }
            }

            return(events);
        }
Ejemplo n.º 3
0
        public void Run([CosmosDBTrigger(
                             databaseName: "EventStore",
                             collectionName: "Events",
                             ConnectionStringSetting = "CosmosDBConnection",
                             LeaseCollectionName = "leases",
                             CreateLeaseCollectionIfNotExists = true)] IReadOnlyList <Document> documents,
                        ILogger log)
        {
            logger = log;
            logger.LogInformation($"Documents modified: {documents.Count}");

            foreach (var document in documents)
            {
                logger.LogInformation($"Processing document: {document}");

                var @event = EventConvert.Deserialize(document.ToString());

                eventBus.Publish(@event);
            }
        }
Ejemplo n.º 4
0
        public void WhenEventIsABankAccountCreatedEvent_ThenJsonIsDeserializedSuccessfully()
        {
            var jsonEvent = "{"
                            + "\"id\": \"00000000-0000-0000-0000-000000000001\","
                            + "\"EntityId\": \"11111111-1111-1111-1111-111111111111\","
                            + "\"AggregateRootId\": \"11111111-1111-1111-1111-111111111111\","
                            + "\"Timestamp\": \"2020-01-01T01:02:59.457182Z\","
                            + "\"Type\": \"BankAccountCreatedEvent\","
                            + "\"Name\": \"John Doe\","
                            + "\"Version\": 1"
                            + "}";

            var bankAccountCreatedEvent = EventConvert.Deserialize <BankAccountCreatedEvent>(jsonEvent);

            bankAccountCreatedEvent.GetType().Should().Be(typeof(BankAccountCreatedEvent));

            bankAccountCreatedEvent.Id.Should().Be(Guid.Parse("00000000-0000-0000-0000-000000000001"));
            bankAccountCreatedEvent.AggregateRootId.Should().Be(Guid.Parse("11111111-1111-1111-1111-111111111111"));
            bankAccountCreatedEvent.EntityId.Should().Be(Guid.Parse("11111111-1111-1111-1111-111111111111"));
            bankAccountCreatedEvent.Timestamp.Should().Be(DateTime.Parse("2020-01-01T01:02:59.457182Z").ToUniversalTime());
            bankAccountCreatedEvent.Type.Should().Be("BankAccountCreatedEvent");
            bankAccountCreatedEvent.Name.Should().Be("John Doe");
            bankAccountCreatedEvent.Version.Should().Be(1);
        }