public async Task ShouldScheduleEvent4() { // arrange string topic = Guid.NewGuid().ToString(); var processor = new TestMessageProcessor(); host.RegisterMessageProcessor("barbaz", processor); var settings = publisterSettings.Copy(); settings.Topic = topic; var publisher = new DomainEventPublisher(settings, new NullLogger <DomainEventPublisher>()); var correlationId = Guid.NewGuid().ToString(); var scheduleDate = DateTime.UtcNow.AddDays(1); // act var @event = new TestEvent() { IntValue = random.Next(), StringValue = Guid.NewGuid().ToString() }; await publisher.ScheduleAsync <TestEvent>(@event, scheduleDate, new EventProperties() { EventType = "foo", Topic = "bar", RoutingKey = "baz", CorrelationId = 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("foo", message.ApplicationProperties[Constants.MESSAGE_TYPE_KEY]); Assert.Equal(correlationId, message.Properties.CorrelationId); ((DateTime)message.MessageAnnotations[new Symbol(Constants.SCHEDULED_ENQUEUE_TIME_UTC)]).Should().BeCloseTo(scheduleDate); }