public Task StartAsync(CancellationToken stoppingToken) { _logger.Info("Starting background services..."); SendTransaction(null); _timer = new Timer(SendTransaction, null, TimeSpan.Zero, TimeSpan.FromMinutes(60)); return(Task.CompletedTask); }
private void Connect() { _logger.Info("Attempting initial connection to RabbitMQ..."); var connectionRetries = 0; var connected = ConnectToQueue(); if (!connected) { _logger.Info($"Initial connection to RabbitMQ failed. Beginning retries [MAX = {_queueConnectionSettings.Value.MaxConnectionRetries}]..."); } while (CanRetry(connected, connectionRetries)) { connectionRetries++; _logger.Info($"Attempting {connectionRetries} connection to RabbitMQ..."); connected = ConnectToQueue(); if (CanRetry(connected, connectionRetries)) { _logger.Info($"Connection attempt {connectionRetries} to RabbitMQ failed. Will retry in {_queueConnectionSettings.Value.ConnectionRetryWaitSeconds} seconds..."); var task = Task.Delay(new TimeSpan(0, 0, 0, _queueConnectionSettings.Value.ConnectionRetryWaitSeconds)); task.Wait(); } else { _logger.Info($"Connection attempt {connectionRetries} to RabbitMQ failed. Max retries of {_queueConnectionSettings.Value.MaxConnectionRetries} reached. Will not retry."); } } if (!connected) { _logger.Info("Application could not successfully connected to RabbitMQ."); throw new Exception("Unable to connect to RabbitMQ"); } _logger.Info("Application has successfully connected to RabbitMQ."); }
public T InvokeApi <T>(string url, ApiRequestData data, IApiLogger logger) { string value = ""; try { var request = (HttpWebRequest)WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; request.Timeout = data.requestTimeout; // headers if (data.acceptHeader != null) { request.Accept = data.acceptHeader; } foreach (KeyValuePair <string, string> header in data.headers) { request.Headers.Add(header.Key, header.Value); } request.Method = data.method.ToString(); //處理POST資料 if (data.method == ApiRequestData.Method.POST || data.method == ApiRequestData.Method.PUT) { var paramBytes = Encoding.UTF8.GetBytes(data.postData); request.ContentType = data.contentTypeText; request.ContentLength = paramBytes.Length; using (var stream = request.GetRequestStream()) { stream.Write(paramBytes, 0, paramBytes.Length); } } logger.Info($"{url} req: {data.postData}"); using (var response = (HttpWebResponse)request.GetResponse()) { //HttpStatusCode=200才算呼叫成功 if (response.StatusCode == HttpStatusCode.OK) { using (var sr = new StreamReader(response.GetResponseStream())) { value = sr.ReadToEnd(); } } else { throw new Exception(((int)response.StatusCode).ToString() + ":" + response.StatusDescription); } } } catch (Exception ex) { logger.Error($"invokeApi {ex.ToString()}"); } logger.Info($"{url} resp: {value}"); return(JsonConvert.DeserializeObject <T>(value)); }