コード例 #1
0
        private async Task ProcessMessageAsync(SQSMessage message, ILambdaContext context)
        {
            context.Logger.LogLine($"Processed message: {message.Body}");
            context.Logger.LogLine($"MessageAttributes: {JsonConvert.SerializeObject(message.MessageAttributes)}");

            await Task.CompletedTask;
        }
コード例 #2
0
        public static User ToUserDomain(this SQSMessage sqsMessage)
        {
            if (sqsMessage != null)
            {
                return(JsonUtil.DeserializeContent <User>(sqsMessage.Body));
            }

            return(null);
        }
コード例 #3
0
        public static Game ToGameDomain(this SQSMessage sqsMessage)
        {
            if (sqsMessage != null)
            {
                var Game = JsonUtil.DeserializeContent <Game>(sqsMessage.Body);
                Game.createdAt = DateTime.Now;
                return(Game);
            }

            return(null);
        }
コード例 #4
0
        private void Loop(CancellationToken token)
        {
            var manager = new ExternalCommandManager();

            while (!token.IsCancellationRequested)
            {
                SQSMessage message   = null;
                LogRecord  logRecord = null;
                try
                {
                    // Read a message from the queue using the ExternalCommands console application.
                    message = manager.ReadMessage(this._profile, this._region, this._queueUrl);
                    if (token.IsCancellationRequested)
                    {
                        return;
                    }
                    if (message == null)
                    {
                        // Since there are no messages, sleep a bit to wait for messages to come.
                        Thread.Sleep(1000);
                        continue;
                    }

                    // If a message was received execute the Lambda function within the test tool.
                    var request = new ExecutionRequest
                    {
                        AWSProfile = this._profile,
                        AWSRegion  = this._region,
                        Function   = this._function,
                        Payload    = message.Body
                    };

                    var response = this._runtime.ExecuteLambdaFunction(request);

                    // Capture the results to send back to the client application.
                    logRecord = new LogRecord
                    {
                        ProcessTime   = DateTime.Now,
                        ReceiptHandle = message.ReceiptHandle,
                        Logs          = response.Logs,
                        Error         = response.Error
                    };
                }
                catch (Exception e)
                {
                    logRecord = new LogRecord
                    {
                        ProcessTime = DateTime.Now,
                        Error       = e.Message
                    };

                    Thread.Sleep(1000);
                }

                if (logRecord != null && message != null)
                {
                    logRecord.Event = message.Body;
                }

                lock (LOG_LOCK)
                {
                    this._records.Add(logRecord);
                }
            }
        }