public async Task ShouldPublishEvent2() { // arange string topic = Guid.NewGuid().ToString(); var processor = new TestMessageProcessor(); host.RegisterMessageProcessor(topic + "TestEvent", processor); var settings = publisterSettings.Copy(); settings.Topic = topic; var publisher = new DomainEventPublisher(settings, new NullLogger <DomainEventPublisher>()); var correlationId = Guid.NewGuid().ToString(); // act var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString() }; await publisher.PublishAsync(@event, correlationId).ConfigureAwait(false); // assert Assert.Single(processor.Messages); var message = processor.Messages[0]; Assert.Equal(@event.IntValue, JsonConvert.DeserializeObject <TestEvent>(message.GetBody <string>()).IntValue); Assert.Equal(@event.StringValue, JsonConvert.DeserializeObject <TestEvent>(message.GetBody <string>()).StringValue); Assert.Equal(@event.GetType().FullName, message.ApplicationProperties[Constants.MESSAGE_TYPE_KEY]); Assert.Equal(correlationId, message.Properties.CorrelationId); }
public async Task ShouldPublishWithUsing() { // arrange string topic = Guid.NewGuid().ToString(); List <Message> messages = new List <Message>(); var processor = new TestMessageProcessor(50, messages); host.RegisterMessageProcessor(topic + "TestEvent", processor); var settings = publisterSettings.Copy(); settings.Topic = topic; var count = 10; // act using (var publisher = new DomainEventPublisher(settings, new NullLogger <DomainEventPublisher>())) { publisher.Connect(); for (int i = 0; i < count; i++) { var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString() }; await publisher.PublishAsync(@event).ConfigureAwait(false); } } // assert Assert.Equal(count, processor.Messages.Count); }
public Task Handle(EntityCreated <T> notification, CancellationToken cancellationToken) { return(_eventPublisher.PublishAsync(new { event_type = "entity-created", event_data = notification.Entity }, cancellationToken)); }
public async Task ShouldReceiveMessage_RejectAsync() { receiverSettings.Queue = Guid.NewGuid().ToString(); List <Message> messages = new List <Message>(); host.RegisterMessageProcessor(receiverSettings.Queue + "TestEvent", new TestMessageProcessor(50, messages)); linkProcessor = new TestLinkProcessor(); host.RegisterLinkProcessor(linkProcessor); int count = 1; publisterSettings.Topic = receiverSettings.Queue; var publisher = new DomainEventPublisher(publisterSettings, new NullLogger <DomainEventPublisher>()); for (int i = 0; i < count; i++) { var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString() }; await publisher.PublishAsync(@event).ConfigureAwait(false); } var source = new TestMessageSource(new Queue <Message>(messages)); host.RegisterMessageSource(receiverSettings.Queue, source); using (var receiver = new DomainEventReceiver(receiverSettings, provider, new NullLogger <DomainEventReceiver>())) { receiver.Start(eventTypes); int waits = 0; do { await Task.Delay(1000).ConfigureAwait(false); if (receiver.Link.LinkState == LinkState.Attached) { break; } waits++; }while (waits < 20); for (int i = 0; i < count; i++) { var message = receiver.Receive(TimeSpan.FromSeconds(10)); message.Reject(); await Task.Delay(1000).ConfigureAwait(false); } } Assert.Equal(count, source.DeadLetterCount); Assert.Equal(0, source.Count); }
public async Task ShouldReceiveMessage_Accept() { receiverSettings.Queue = Guid.NewGuid().ToString(); List <Message> messages = new List <Message>(); host.RegisterMessageProcessor(receiverSettings.Queue + "TestEvent", new TestMessageProcessor(50, messages)); linkProcessor = new TestLinkProcessor(); host.RegisterLinkProcessor(linkProcessor); int count = 1; publisterSettings.Topic = receiverSettings.Queue; var publisher = new DomainEventPublisher(publisterSettings, new NullLogger <DomainEventPublisher>()); for (int i = 0; i < count; i++) { var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString() }; await publisher.PublishAsync(@event).ConfigureAwait(false); } var source = new TestMessageSource(new Queue <Message>(messages)); host.RegisterMessageSource(receiverSettings.Queue, source); using (var receiver = new DomainEventReceiver(receiverSettings, provider, new NullLogger <DomainEventReceiver>())) { receiver.Start(eventTypes); for (int i = 0; i < count; i++) { var message = receiver.Receive(TimeSpan.FromSeconds(1)); Assert.NotNull(message.GetData <TestEvent>()); message.Accept(); } } Assert.Equal(0, source.DeadLetterCount); Assert.Equal(0, source.Count); }
public async Task ShouldPublishEvent1WithSerializationSettings() { // arrange string topic = Guid.NewGuid().ToString(); var processor = new TestMessageProcessor(); host.RegisterMessageProcessor(topic + "TestEvent", processor); var settings = publisterSettings.Copy(); settings.Topic = topic; settings.SerializerSettings = new JsonSerializerSettings() { Converters = new List <JsonConverter> { new StringEnumConverter(new CamelCaseNamingStrategy()) } }; var publisher = new DomainEventPublisher(settings, new NullLogger <DomainEventPublisher>()); // act var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString(), Status = StatusEnum.PendingWork }; await publisher.PublishAsync(@event).ConfigureAwait(false); // assert Assert.Single(processor.Messages); var message = processor.Messages[0]; var body = message.GetBody <string>(); Assert.Contains("\"Status\":\"pendingWork\"", body); Assert.Equal(@event.IntValue, JsonConvert.DeserializeObject <TestEvent>(body).IntValue); Assert.Equal(@event.StringValue, JsonConvert.DeserializeObject <TestEvent>(body).StringValue); Assert.Equal(@event.Status, JsonConvert.DeserializeObject <TestEvent>(body).Status); Assert.Equal(@event.GetType().FullName, message.ApplicationProperties[Constants.MESSAGE_TYPE_KEY]); }