Example #1
0
        private MessageRun SendMessage(ScheduledMessage scheduledMessage)
        {
            var messageRun = new MessageRun()
            {
                MessageRunGuid       = Guid.NewGuid(),
                SentSuccessfully     = true,
                SendAttemptTime      = DateTime.UtcNow,
                ScheduledMessageGuid = scheduledMessage.ScheduledMessageGuid
            };

            try
            {
                var publisher = new MessagePublisher(_host, scheduledMessage.Message.Exchange);

                publisher.Publish(scheduledMessage.Message.Body,
                                  scheduledMessage.Message.RoutingKey,
                                  scheduledMessage.Message.Headers);
            }
            catch (Exception ex)
            {
                messageRun.SentSuccessfully = false;
                messageRun.MessageRunError  = new MessageRunError()
                {
                    Error          = ex.ToString(),
                    MessageRunGuid = messageRun.MessageRunGuid
                };
            }

            return(messageRun);
        }
Example #2
0
        public void LogMessageRun(MessageRun messageRun)
        {
            using (var conn = new SqlConnection(_connectionString))
            {
                var parameters = new
                {
                    MessageRunGuid       = messageRun.MessageRunGuid,
                    ScheduledMessageGuid = messageRun.ScheduledMessageGuid,
                    SendAttemptTime      = messageRun.SendAttemptTime,
                    SendSuccessfully     = messageRun.SentSuccessfully
                };

                conn.Execute(SchedulingQueries.InsertMessageRun, parameters);

                if (messageRun.MessageRunError != null)
                {
                    var errorParameters = new
                    {
                        MessageRunGuid = messageRun.MessageRunGuid,
                        Error          = messageRun.MessageRunError.Error
                    };

                    conn.Execute(SchedulingQueries.InsertMessageRunError, errorParameters);
                }
            }
        }