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; } }
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); }
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); } }
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); }