Ejemplo n.º 1
0
        private void applyStrategies(string className, int retryCount, EasyNetQ.SystemMessages.Error msg)
        {
            var settingsKey = "Default";

            if (settingsDictionary.ContainsKey(className))
            {
                settingsKey = className;
            }

            var registry = settingsDictionary[settingsKey];

            var strategies = registry.MatchStrategies(retryCount);

            foreach (var strategy in strategies)
            {
                var local_strategy = strategy;
                Task.Factory.StartNew(() =>
                {
                    if (local_strategy.DelayInSeconds > 0)
                    {
                        log.InfoFormat("Waiting for {0} seconds", local_strategy.DelayInSeconds);
                        Thread.Sleep(local_strategy.DelayInSeconds * 1000);
                    }
                    log.InfoFormat("Applying error queue processing strategy {0}", local_strategy.StrategyClassName);
                    local_strategy.ErrorQueueProcessingStrategy.ProcessError(msg);
                }
                                      );
            }
        }
Ejemplo n.º 2
0
 private string generateFileName(EasyNetQ.SystemMessages.Error msg)
 {
     return
         (Path.Combine(saveToFolderName,
                       String.Format("{0}-{1}-{2}.txt",
                                     msg.Exchange.Replace(':', '_').Replace('.', '_'),
                                     msg.BasicProperties.CorrelationId,
                                     DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss"))
                       ));
 }
Ejemplo n.º 3
0
        public void ProcessError(EasyNetQ.SystemMessages.Error msg)
        {
            log.InfoFormat("Saving message to disk {0} {1}", msg.Exchange, msg.Message);

            var fileName = generateFileName(msg);

            using (StreamWriter file = new StreamWriter(fileName))
            {
                file.WriteLine(msg.Message);
            }
        }
Ejemplo n.º 4
0
        public void ProcessError(EasyNetQ.SystemMessages.Error msg)
        {
            log.InfoFormat("Sending message to mail {0} {1}", msg.Exchange, msg.Message);

            var mailMsg = new MailMessage();

            mailMsg.From    = from;
            mailMsg.To      = receivers;
            mailMsg.Subject = String.Format("[NetGenQueueService] [{0}] [{1}]", rabbitMQHost, rabbitMQVirtualHost);
            mailMsg.Body    = msg.Exception.Replace("\\r\\n", "\n");
            mailMsg.Attachments.Add(new Attachment(Encoding.UTF8.GetBytes(msg.Message), "Payload.txt", "text/plain"));

            bus.Publish(mailMsg);
        }
Ejemplo n.º 5
0
        public void ProcessError(EasyNetQ.SystemMessages.Error msg)
        {
            log.InfoFormat("Retrying message {0} {1}", msg.Exchange, msg.Message);

            bus.Advanced.Publish
            (
                new Exchange(msg.Exchange),
                msg.RoutingKey,
                false,
                false,
                msg.BasicProperties,
                Encoding.UTF8.GetBytes(msg.Message)
            );
        }