public CheckForMessagesShould()
            {
                expectedQueueUrl = "QueueUrl";
                queueInfo        = new QueueInfo(typeof(TestMessage), expectedQueueUrl);
                var queues = new Dictionary <string, QueueInfo>();

                queues.Add("", queueInfo);

                var messageBusMock = new Mock <IMessageBus>();

                sqsServiceMock = new Mock <ISqsService>();
                var messageDeserializerMock = new Mock <IMessageDeserializer>();

                handlerMock = new Mock <IHandlerAsync <TestMessage> >();

                messageBusMock.Setup(x => x.Queues).Returns(queues);
                messageBusMock.Setup(x => x.GetHandler <TestMessage>()).Returns(handlerMock.Object);

                expectedMessage = new TestMessage();
                var response = new Amazon.SQS.Model.ReceiveMessageResponse();

                busMessage = new Amazon.SQS.Model.Message();
                busMessage.ReceiptHandle = "Recipt001";
                response.Messages.Add(busMessage);
                sqsServiceMock.Setup(x => x.ReceiveMessageAsync(expectedQueueUrl)).Returns(Task.FromResult(response));
                messageDeserializerMock.Setup(x => x.Deserialize <TestMessage>(busMessage)).Returns(expectedMessage);

                sut = new MessageBusListener(messageBusMock.Object, sqsServiceMock.Object, messageDeserializerMock.Object);
            }
            public void ReceiveMessagesForQueue()
            {
                var expectedQueueUrl = "QueueUrl";
                var queues           = new Dictionary <string, QueueInfo>();

                queues.Add("", new QueueInfo(typeof(TestMessage), expectedQueueUrl));

                var messageBusMock          = new Mock <IMessageBus>();
                var sqsServiceMock          = new Mock <ISqsService>();
                var messageDeserializerMock = new Mock <IMessageDeserializer>();

                messageBusMock.Setup(x => x.Queues).Returns(queues);

                var sut = new MessageBusListener(messageBusMock.Object, sqsServiceMock.Object, messageDeserializerMock.Object);

                sut.StartListening();

                sqsServiceMock.Verify(x => x.ReceiveMessageAsync(expectedQueueUrl));
            }
Ejemplo n.º 3
0
        private void InternalSubscribe(IListener listener, Type messageType)
        {
            var internalListener = _listeners
                                   .FirstOrDefault(l => l.Listener.TryGetTarget(out var target) && ReferenceEquals(target, listener));

            if (internalListener != null)
            {
                if (internalListener.Handlers.Any(h => h.MessageType == messageType))
                {
                    return;
                }
            }
            else
            {
                internalListener = new MessageBusListener(listener);
                _listeners.Add(internalListener);
            }

            internalListener.Handlers.Add(new MessageBusHandler(messageType));
        }