public async Task When_outstanding_in_outbox_sweep_clears_them_async() { //Arrange const int milliSecondsSinceSent = 500; var outbox = new InMemoryOutbox(); var commandProcessor = new FakeCommandProcessor(); var sweeper = new OutboxSweeper(milliSecondsSinceSent, commandProcessor); var messages = new Message[] { new MessageTestDataBuilder(), new MessageTestDataBuilder(), new MessageTestDataBuilder() }; foreach (var message in messages) { outbox.Add(message); commandProcessor.Post(message.ToStubRequest()); } //Act await Task.Delay(milliSecondsSinceSent * 2); // -- let the messages expire sweeper.SweepAsyncOutbox(); await Task.Delay(200); //Assert outbox.EntryCount.Should().Be(3); commandProcessor.Dispatched.Count.Should().Be(3); commandProcessor.Deposited.Count.Should().Be(3); }
public void When_too_new_to_sweep_leaves_them() { //Arrange const int milliSecondsSinceSent = 500; var commandProcessor = new FakeCommandProcessor(); var sweeper = new OutboxSweeper(milliSecondsSinceSent, commandProcessor); Message oldMessage = new MessageTestDataBuilder(); commandProcessor.DepositPost(oldMessage.ToStubRequest()); var messages = new Message[] { new MessageTestDataBuilder(), new MessageTestDataBuilder(), new MessageTestDataBuilder() }; Thread.Sleep(milliSecondsSinceSent * 2); foreach (var message in messages) { commandProcessor.DepositPost(message.ToStubRequest()); } //Act sweeper.Sweep(); Thread.Sleep(200); //Assert commandProcessor.Dispatched.Count.Should().Be(1); commandProcessor.Deposited.Count.Should().Be(4); }
private void DoWork(object state) { s_logger.LogInformation("Outbox Sweeper looking for unsent messages"); var outBoxSweeper = new OutboxSweeper( milliSecondsSinceSent: 5000, outbox: _outbox, commandProcessor: _commandProcessor); outBoxSweeper.Sweep(); s_logger.LogInformation("Outbox Sweeper sleeping"); }
private void DoWork(object state) { s_logger.LogInformation("Outbox Sweeper looking for unsent messages"); var scope = _serviceScopeFactory.CreateScope(); try { IAmACommandProcessor commandProcessor = scope.ServiceProvider.GetService <IAmACommandProcessor>(); var outBoxSweeper = new OutboxSweeper( millisecondsSinceSent: _options.MinimumMessageAge, commandProcessor: commandProcessor, _options.BatchSize, _options.UseBulk); if (_options.UseBulk) { outBoxSweeper.SweepAsyncOutbox(); } else { outBoxSweeper.Sweep(); } } catch (Exception e) { s_logger.LogError(e, "Error while sweeping the outbox."); throw; } finally { scope.Dispose(); } s_logger.LogInformation("Outbox Sweeper sleeping"); }
public void When_too_new_to_sweep_leaves_them() { //Arrange const int milliSecondsSinceSent = 500; var outbox = new InMemoryOutbox(); var commandProcessor = new FakeCommandProcessor(); var sweeper = new OutboxSweeper(milliSecondsSinceSent, outbox, commandProcessor); var messages = new Message[] { new MessageTestDataBuilder(), new MessageTestDataBuilder(), new MessageTestDataBuilder() }; foreach (var message in messages) { outbox.Add(message); commandProcessor.Post(message.ToStubRequest()); } //Act sweeper.Sweep(); //Assert commandProcessor.Dispatched.Count.Should().Be(3); commandProcessor.Posted.Count.Should().Be(0); }