コード例 #1
0
        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));
                }
            }
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public Queue(ISenderAgent senderAgent)
     : this(senderAgent, new DropQueueEvents(), new MetaDataBusiness(), new QueueSettings())
 {
 }