Ejemplo n.º 1
0
 public BPubSubUniqueMessageDeliveryEnsurer(
     IBMemoryServiceInterface _EnsurerMemoryService,
     IBPubSubServiceInterface _PubSubService)
 {
     EnsurerMemoryService = _EnsurerMemoryService;
     PubSubService        = _PubSubService;
 }
Ejemplo n.º 2
0
        private bool SubscribeToPubSub(IBPubSubServiceInterface _PubSub, Action <string> _ErrorMessageAction = null)
        {
            return(_PubSub.CustomSubscribe("models", (Message, Json) =>
            {
                //make two copies so that writers don't interfere with each other
                try
                {
                    byte[] MessageBytes = Convert.FromBase64String(Json);
                    MemoryStream InputStream = new MemoryStream(MessageBytes);
                    MemoryStream OutputStream = new MemoryStream();

                    using (DeflateStream decompressionStream = new DeflateStream(InputStream, CompressionMode.Decompress))
                    {
                        decompressionStream.CopyTo(OutputStream);
                    }

                    string DecompressedMessage = Encoding.UTF8.GetString(OutputStream.ToArray());
                    NodeMessage MessageReceived = JsonConvert.DeserializeObject <NodeMessage>(DecompressedMessage);
                    AddMessage(MessageReceived, _ErrorMessageAction);
                }
                catch (Exception ex)
                {
                    _ErrorMessageAction?.Invoke($"[{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fffff")}] {ex.Message}\n{ex.StackTrace}");
                }
            }));
        }
Ejemplo n.º 3
0
        public void Setup(IBPubSubServiceInterface _PubSubService)
        {
            PubSubService = _PubSubService;

            ActionStringMap.Clear();
            StringActionMap.Clear();

            foreach (var Action in Actions.ActionStringPrefixMap.Keys)
            {
                string ActionName = Actions.ActionStringPrefixMap[Action] + Resources_DeploymentManager.Get().GetDeploymentBranchNameEscapedLoweredWithUnderscore() + "_" + Resources_DeploymentManager.Get().GetDeploymentBuildNumber();

                ActionStringMap.Add(Action, ActionName);
                StringActionMap.Add(ActionName, Action);
            }
        }
Ejemplo n.º 4
0
        public bool WithPubSubService(bool _bFailoverMechanismEnabled = true)
        {
            /*
             * Pub/Sub service initialization
             */
            PubSubService = new BPubSubServiceAWS(RequiredEnvironmentVariables["AWS_ACCESS_KEY"], RequiredEnvironmentVariables["AWS_SECRET_KEY"], RequiredEnvironmentVariables["AWS_REGION"],
                                                  (string Message) =>
            {
                LoggingService.WriteLogs(BLoggingServiceMessageUtility.Single(EBLoggingServiceLogType.Critical, Message), ProgramID, "Initialization");
            });

            if (PubSubService == null || !PubSubService.HasInitializationSucceed())
            {
                LoggingService.WriteLogs(BLoggingServiceMessageUtility.Single(EBLoggingServiceLogType.Critical, "Pub/Sub service initialization has failed."), ProgramID, "Initialization");
                return(false);
            }

            return(true);
        }
Ejemplo n.º 5
0
        public bool WithMemoryService(bool _bFailoverMechanismEnabled = true, IBPubSubServiceInterface _WithPubSubService = null)
        {
            /*
             * Memory service initialization
             */
            if (!RequiredEnvironmentVariables.ContainsKey("REDIS_ENDPOINT") ||
                !RequiredEnvironmentVariables.ContainsKey("REDIS_PORT") ||
                !int.TryParse(RequiredEnvironmentVariables["REDIS_PORT"], out int RedisPort) ||
                !RequiredEnvironmentVariables.ContainsKey("REDIS_PASSWORD"))
            {
                LoggingService.WriteLogs(BLoggingServiceMessageUtility.Single(EBLoggingServiceLogType.Critical, "REDIS_ENDPOINT, REDIS_PORT, REDIS_PASSWORD parameters must be provided and valid."), ProgramID, "Initialization");
                return(false);
            }

            bool RedisSslEnabled = false;

            if (RequiredEnvironmentVariables.ContainsKey("REDIS_SSL_ENABLED") && !bool.TryParse(RequiredEnvironmentVariables["REDIS_SSL_ENABLED"], out RedisSslEnabled))
            {
                LoggingService.WriteLogs(BLoggingServiceMessageUtility.Single(EBLoggingServiceLogType.Warning, "REDIS_SSL_ENABLED parameter has been provided, but it has not a valid value. It will be continued without SSL."), ProgramID, "Initialization");
            }

            MemoryService = new BMemoryServiceRedis(
                RequiredEnvironmentVariables["REDIS_ENDPOINT"],
                RedisPort,
                RequiredEnvironmentVariables["REDIS_PASSWORD"],
                RedisSslEnabled,
                _WithPubSubService,
                _bFailoverMechanismEnabled,
                (string Message) =>
            {
                LoggingService.WriteLogs(BLoggingServiceMessageUtility.Single(EBLoggingServiceLogType.Critical, Message), ProgramID, "Initialization");
            });

            if (MemoryService == null || !MemoryService.HasInitializationSucceed())
            {
                LoggingService.WriteLogs(BLoggingServiceMessageUtility.Single(EBLoggingServiceLogType.Critical, "Memory service initialization has failed."), ProgramID, "Initialization");
                return(false);
            }

            return(true);
        }
Ejemplo n.º 6
0
        public bool WithPubSubService(bool _bFailoverMechanismEnabled = true)
        {
            /*
             * Pub/Sub service initialization
             */
            PubSubService = new BPubSubServiceAzure(
                RequiredEnvironmentVariables["AZ_CLIENT_ID"],
                RequiredEnvironmentVariables["AZ_CLIENT_SECRET"],
                RequiredEnvironmentVariables["AZ_TENANT_ID"],
                RequiredEnvironmentVariables["AZ_SERVICEBUS_NAMESPACE_ID"],
                RequiredEnvironmentVariables["AZ_SERVICEBUS_NAMESPACE_CONNECTION_STRING"],
                (string Message) =>
            {
                LoggingService.WriteLogs(BLoggingServiceMessageUtility.Single(EBLoggingServiceLogType.Critical, Message), ProgramID, "Initialization");
            });

            if (PubSubService == null || !PubSubService.HasInitializationSucceed())
            {
                LoggingService.WriteLogs(BLoggingServiceMessageUtility.Single(EBLoggingServiceLogType.Critical, "Pub/Sub service initialization has failed."), ProgramID, "Initialization");
                return(false);
            }

            return(true);
        }