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 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);
        }
Exemple #4
0
        public void ContainerHostMessageProcessorTest()
        {
            string name      = "ContainerHostMessageProcessorTest";
            var    processor = new TestMessageProcessor();

            host.RegisterMessageProcessor(name, processor);

            int count      = 500;
            var connection = new Connection(Address);
            var session    = new Session(connection);
            var sender     = new SenderLink(session, "send-link", name);

            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties()
                {
                    GroupId = name
                };
                sender.Send(message, Timeout);
            }

            sender.Close();
            session.Close();
            connection.Close();

            Assert.Equal(count, processor.Messages.Count);
            for (int i = 0; i < count; i++)
            {
                var message = processor.Messages[i];
                Assert.Equal("msg" + i, message.GetBody <string>());
            }
        }
Exemple #5
0
        public void ContainerHostProcessorOrderTest()
        {
            string         name      = "ContainerHostProcessorOrderTest";
            List <Message> messages  = new List <Message>();
            var            processor = new TestMessageProcessor(50, messages);

            host.RegisterMessageProcessor(name, processor);
            linkProcessor = new TestLinkProcessor();
            host.RegisterLinkProcessor(linkProcessor);

            int count      = 80;
            var connection = new Connection(Address);
            var session    = new Session(connection);
            var sender     = new SenderLink(session, "send-link", name);

            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties()
                {
                    GroupId = name
                };
                sender.Send(message, Timeout);
            }

            sender.Close();

            Assert.Equal(count, messages.Count);

            host.RegisterMessageSource(name, new TestMessageSource(new Queue <Message>(messages)));
            var receiver = new ReceiverLink(session, "recv-link", name);

            for (int i = 0; i < count; i++)
            {
                var message = receiver.Receive();
                receiver.Accept(message);
            }

            receiver.Close();

            sender = new SenderLink(session, "send-link", "any");
            for (int i = 0; i < count; i++)
            {
                var message = new Message("msg" + i);
                message.Properties = new Properties()
                {
                    GroupId = name
                };
                sender.Send(message, Timeout);
            }

            sender.Close();
            session.Close();
            connection.Close();
        }
        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]);
        }