//        string resource, string action, int durationSecond, int itemProcessedPerSeconds, int totalItemProcessed) : this("", SystemActivityType.PerformanceInfo

        public async Task <string> NotifyAsync(string resource, string action, int durationSecond, int itemProcessedPerSeconds, int totalItemProcessed, bool sendToConsole = true)
        {
            var sa = new SystemActivity(resource, action, durationSecond, itemProcessedPerSeconds, totalItemProcessed);

            await NotifyAsync(sa);

            if (sendToConsole)
            {
                System.Console.WriteLine($"[san:{sa.Type}]{sa.Message}");
            }
            return(sa.Message);
        }
        public async Task <string> NotifyAsync(string message, SystemActivityType type = SystemActivityType.Info, bool sendToConsole = true)
        {
            var systemActivity = new SystemActivity(message, type);

            await NotifyAsync(systemActivity);

            if (sendToConsole)
            {
                System.Console.WriteLine($"[san:{type}]{message}");
            }
            return(message);
        }
        private bool InternalOnMessageReceived(string messageBody, string messageId, long sequenceNumber)
        {
            var sa = SystemActivity.FromJson(messageBody);

            if (sa == null)
            {
                return(true); // TODO: For now ignore the issue
            }
            else
            {
                if (OnMessageReceived != null && !PauseOnMessageReceived)
                {
                    OnMessageReceived(sa);
                }

                // System.Console.WriteLine($"[{sa.Type}] Host:{sa.MachineName}, {sa.UtcDateTime}, {sa.Message}");
                return(true);
            }
        }
 public async Task NotifyAsync(SystemActivity sa)
 {
     await _pubSub.PublishAsync(sa.ToJSON());
 }