示例#1
0
        public void When_there_are_multiple_items_and_some_are_dispatched()
        {
            //Arrange
            var outbox = new InMemoryOutbox();

            var messageIds = new Guid[] { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), };

            for (int i = 0; i <= 4; i++)
            {
                outbox.Add(new MessageTestDataBuilder().WithId(messageIds[i]));
            }

            //Act
            var now = DateTime.UtcNow;

            outbox.MarkDispatched(messageIds[0], now);
            outbox.MarkDispatched(messageIds[4], now);

            Task.Delay(500).Wait();

            var sentMessages        = outbox.DispatchedMessages(5000);
            var outstandingMessages = outbox.OutstandingMessages(0);

            //Assert
            sentMessages.Count().Should().Be(2);
            outstandingMessages.Count().Should().Be(3);
            sentMessages.Any(msg => msg.Id == messageIds[0]).Should().BeTrue();
            sentMessages.Any(msg => msg.Id == messageIds[4]).Should().BeTrue();
            outstandingMessages.Any(msg => msg.Id == messageIds[1]).Should().BeTrue();
            outstandingMessages.Any(msg => msg.Id == messageIds[2]).Should().BeTrue();
            outstandingMessages.Any(msg => msg.Id == messageIds[3]).Should().BeTrue();
        }
    public void When_outstanding_in_outbox_they_are_retrieved_correctly()
    {
        var minimumAgeInMs = 500;
        var outbox         = new InMemoryOutbox();

        outbox.Add(new MessageTestDataBuilder());
        outbox.Add(new MessageTestDataBuilder());

        Thread.Sleep(minimumAgeInMs);

        outbox.Add(new MessageTestDataBuilder());
        outbox.Add(new MessageTestDataBuilder());

        var messagesToDispatch = outbox.OutstandingMessages(minimumAgeInMs);
        var allMessages        = outbox.OutstandingMessages(0);

        foreach (var message in messagesToDispatch)
        {
            outbox.MarkDispatched(message.Id);
        }

        var messagesAfterDispatch = outbox.OutstandingMessages(minimumAgeInMs);

        Assert.Equal(2, messagesToDispatch.Count());
        Assert.Equal(4, allMessages.Count());
        Assert.Empty(messagesAfterDispatch);
    }
示例#3
0
        public void When_marking_dispatched_in_outbox()
        {
            //Arrange
            var outbox = new InMemoryOutbox();

            var messageId    = Guid.NewGuid();
            var messageToAdd = new Message(
                new MessageHeader(messageId, "test_topic", MessageType.MT_DOCUMENT),
                new MessageBody("message body"));


            //Act
            outbox.Add(messageToAdd);
            var dispatchedAt = DateTime.Now;

            outbox.MarkDispatched(messageId, dispatchedAt);

            var dispatchedMessages = outbox.DispatchedMessages(500);

            //Assert
            dispatchedMessages.Count().Should().Be(1);
            dispatchedMessages.First().Id.Should().Be(messageId);
        }