public SendBusiness(IConfigBusiness configBusiness, IQueueEvents queueEvents) { var config = configBusiness.LoadFiles(); foreach (var databaseConfig in config.Databases) { ISenderAgent senderAgent = null; try { if (databaseConfig.IsEnabled) { senderAgent = databaseConfig.GetSenderAgent(); } } catch (Exception exception) { queueEvents.OnExceptionEvent(exception); } if (senderAgent != null) { var queueSettings = new QueueSettings(config.Application.FlushSecondsInterval, false, config.Application.MaxQueueSize, config.Application.Metadata); var metaDataBusiness = new MetaDataBusiness(); _queues.Add(new Queue(senderAgent, queueEvents, metaDataBusiness, queueSettings)); } } }
public Queue(ISenderAgent senderAgent, IQueueEvents queueEvents, IMetaDataBusiness metaDataBusiness, IQueueSettings queueSettings) { _pointValidator = new PointValidator(); queueEvents.OnDebugMessageEvent($"Preparing new queue with target {senderAgent.TargetDescription}."); _queueAction = new QueueAction(queueEvents, GetQueueInfo); _senderAgent = senderAgent; _queueEvents = queueEvents; _metaDataBusiness = metaDataBusiness; _queueSettings = queueSettings; }
public Point BuildQueueMetadata(string action, ISendResponse sendResponse, ISenderAgent senderAgent, IQueueCountInfo queueCountInfo) { var assemblyName = Assembly.GetExecutingAssembly().GetName(); var tags = new Dictionary <string, object> { { "counter", "queueCount" }, { "hostname", Environment.MachineName }, { "version", assemblyName.Version.ToString() }, { "application", assemblyName.Name }, //{ "target", senderAgent.TargetDescription }, { "isSuccess", sendResponse.IsSuccess }, { "action", action } }; if (!string.IsNullOrEmpty(sendResponse.Message)) { tags.Add("message", sendResponse.Message); } var fields = new Dictionary <string, object> { //{ "value", (decimal)sendResponse.PointCount }, { "value", (decimal)queueCountInfo.TotalQueueCount }, { "elapsed", sendResponse.Elapsed.TotalMilliseconds.ToString("0") }, { "failQueueCount", queueCountInfo.FailQueueCount }, { "totalQueueCount", queueCountInfo.TotalQueueCount }, { "queueCount", queueCountInfo.QueueCount }, { "absoluteAmountDelta", sendResponse.PointCount }, }; var point = new Point { Measurement = MetaMeasurementName, Tags = tags, Fields = fields, Precision = TimeUnit.Milliseconds, Timestamp = DateTime.UtcNow }; return(point); }
public Queue(ISenderAgent senderAgent) : this(senderAgent, new DropQueueEvents(), new MetaDataBusiness(), new QueueSettings()) { }