Exemple #1
0
        protected override void Given()
        {
            var serialiser = Substitute.For <IMessageSerialiser <GenericMessage> >();

            serialiser.Serialise(Arg.Any <Message>()).Returns(Message);
            _serialisationRegister.GetSerialiser(typeof(GenericMessage)).Returns(serialiser);
        }
Exemple #2
0
        public void Publish(Message message)
        {
            var messageToSend = _serialisationRegister.GetSerialiser(message.GetType()).Serialise(message);
            var messageType   = message.GetType().Name;

            Client.Publish(new PublishRequest
            {
                Subject  = messageType,
                Message  = messageToSend,
                TopicArn = Arn
            });

            EventLog.Info("Published message: '{0}' with content {1}", messageType, messageToSend);
        }
Exemple #3
0
        protected override void Given()
        {
            Sqs                   = Substitute.For <IAmazonSQS>();
            Serialiser            = Substitute.For <IMessageSerialiser <GenericMessage> >();
            SerialisationRegister = Substitute.For <IMessageSerialisationRegister>();
            Monitor               = Substitute.For <IMessageMonitor>();
            Handler               = Substitute.For <IHandler <GenericMessage> >();
            var response = GenerateResponseMessage(_messageTypeString, Guid.NewGuid());

            Sqs.ReceiveMessage(Arg.Any <ReceiveMessageRequest>()).Returns(x => response, x => new ReceiveMessageResponse());

            SerialisationRegister.GetSerialiser(_messageTypeString).Returns(Serialiser);
            DeserialisedMessage = new GenericMessage {
                RaisingComponent = "Component"
            };
            Serialiser.Deserialise(Arg.Any <string>()).Returns(x => DeserialisedMessage);
        }
        public void ProcessMessageAction(Amazon.SQS.Model.Message message)
        {
            Message typedMessage = null;
            string  rawMessage   = null;

            try
            {
                var    body        = JObject.Parse(message.Body);
                string messageType = body["Subject"].ToString();

                rawMessage   = body["Message"].ToString();
                typedMessage = _serialisationRegister
                               .GetSerialiser(messageType)
                               .Deserialise(rawMessage);

                var handlingSucceeded = true;

                if (typedMessage != null)
                {
                    List <Func <Message, bool> > handlers;
                    if (!_handlers.TryGetValue(typedMessage.GetType(), out handlers))
                    {
                        return;
                    }

                    foreach (var handle in handlers)
                    {
                        var watch = new System.Diagnostics.Stopwatch();
                        watch.Start();

                        handlingSucceeded = handle(typedMessage);

                        watch.Stop();
                        Log.Trace("Handled message - MessageType: " + messageType);
                        _messagingMonitor.HandleTime(watch.ElapsedMilliseconds);
                    }
                }

                if (handlingSucceeded)
                {
                    _queue.Client.DeleteMessage(new DeleteMessageRequest {
                        QueueUrl = _queue.Url, ReceiptHandle = message.ReceiptHandle
                    });
                }
            }
            catch (KeyNotFoundException ex)
            {
                Log.Trace("Didn't handle message {0}. No serialiser setup", rawMessage ?? "");
                _queue.Client.DeleteMessage(new DeleteMessageRequest
                {
                    QueueUrl      = _queue.Url,
                    ReceiptHandle = message.ReceiptHandle
                });
                _onError(ex, message);
            }
            catch (Exception ex)
            {
                Log.ErrorException(string.Format("Issue handling message... {0}. StackTrace: {1}", message, ex.StackTrace), ex);
                if (typedMessage != null)
                {
                    _messagingMonitor.HandleException(typedMessage.GetType().Name);
                }
                _onError(ex, message);
            }
        }
Exemple #5
0
 protected override void Given()
 {
     _serialisationRegister.GetSerialiser(Arg.Any <string>()).Returns(x => { throw new Exception(); });
     _sqs.ReceiveMessage(Arg.Any <ReceiveMessageRequest>()).Returns(x => GenerateEmptyMessage());
     _sqs.When(x => x.ReceiveMessage(Arg.Any <ReceiveMessageRequest>())).Do(x => _callCount++);
 }