示例#1
0
        /// <summary>
        /// Gets the Local System configuration
        /// </summary>
        /// <returns></returns>
        private static ActorSbConfig GetLocaSysConfig()
        {
            ActorSbConfig cfg = new ActorSbConfig();

            cfg.SbConnStr       = Environment.GetEnvironmentVariable("SbConnStr");
            cfg.ReplyMsgQueue   = "actorsystem2/rcvlocal";
            cfg.RequestMsgTopic = "actorsystem/actortopic";
            cfg.ActorSystemName = "actorsystem2";
            return(cfg);
        }
示例#2
0
        /// <summary>
        /// Creates all required actors, which host partitions.
        /// </summary>
        /// <param name="config"></param>
        public ActorSbDistributedDictionaryBase(ActorSbConfig config, ILogger logger)
        {
            if (config == null)
            {
                throw new ArgumentException("Configuration must be specified.");
            }

            this.Config = config;

            this.actorSystem = new ActorSystem("HtmCalculusDriver", config, logger);
        }
示例#3
0
        internal static ActorSbConfig GetLocaSysConfig()
        {
            ActorSbConfig cfg = new ActorSbConfig();

            cfg.SbConnStr                  = sbConnStr;
            cfg.ReplyMsgQueue              = "actorsystem/rcvlocal";
            cfg.RequestMsgTopic            = "actorsystem/actortopic";
            cfg.TblStoragePersistenConnStr = tblAccountConnStr;
            cfg.ActorSystemName            = "inst701";
            return(cfg);
        }
示例#4
0
        /// <summary>
        /// Gets the remote system configurations
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        internal static ActorSbConfig GetRemoteSysConfig(string node = "default")
        {
            var           localCfg = GetLocaSysConfig();
            ActorSbConfig cfg      = new ActorSbConfig();

            cfg.SbConnStr               = SbConnStr;
            cfg.RequestMsgTopic         = "actorsystem/actortopic";
            cfg.RequestSubscriptionName = node;
            cfg.ReplyMsgQueue           = null;
            return(cfg);
        }
        public void TestInitialisation()
        {
            ActorSbConfig actorSbConfig = new ActorSbConfig();

            Assert.IsNotNull(actorSbConfig);
            actorSbConfig.ActorSystemName            = "ActorSystemName";
            actorSbConfig.TblStoragePersistenConnStr = "TableConnectionString";
            actorSbConfig.NumOfPartitions            = 10;
            actorSbConfig.ReplyMsgQueue           = "ReplyMessageQueue";
            actorSbConfig.RequestMsgTopic         = "replyMessageTopic";
            actorSbConfig.RequestSubscriptionName = "SubscriptionName";

            Assert.AreEqual("ActorSystemName", actorSbConfig.ActorSystemName);
            Assert.AreEqual("TableConnectionString", actorSbConfig.TblStoragePersistenConnStr);
            Assert.AreEqual(10, actorSbConfig.NumOfPartitions);
            Assert.AreEqual("ReplyMessageQueue", actorSbConfig.ReplyMsgQueue);
            Assert.AreEqual("replyMessageTopic", actorSbConfig.RequestMsgTopic);
            Assert.AreEqual("SubscriptionName", actorSbConfig.RequestSubscriptionName);
            Assert.AreEqual(100, actorSbConfig.BatchSize);
        }
        public void Start(string[] args)
        {
            ActorSbConfig cfg = new ActorSbConfig();

            var builder = new ConfigurationBuilder();

            builder.AddCommandLine(args);
            builder.AddEnvironmentVariables();
            IConfigurationRoot configArgs = builder.Build();

            cfg.SbConnStr                  = configArgs["SbConnStr"];
            cfg.ReplyMsgQueue              = configArgs["ReplyMsgQueue"];
            cfg.RequestMsgTopic            = configArgs["RequestMsgTopic"];
            cfg.TblStoragePersistenConnStr = configArgs["TblStoragePersistenConnStr"];
            cfg.ActorSystemName            = configArgs["ActorSystemName"];
            cfg.RequestSubscriptionName    = configArgs["SubscriptionName"];
            string systemName = configArgs["SystemName"];

            Console.CancelKeyPress += (sender, eventArgs) =>
            {
                tokenSrc.Cancel();
            };

            BlobStoragePersistenceProvider prov = null;

            if (String.IsNullOrEmpty(cfg.TblStoragePersistenConnStr) == false)
            {
                prov = new BlobStoragePersistenceProvider();
            }

            prov.InitializeAsync(cfg.ActorSystemName, new Dictionary <string, object>()
            {
                { "StorageConnectionString", cfg.TblStoragePersistenConnStr }
            }, purgeOnStart: false, logger: this.logger).Wait();

            akkaClusterSystem = new AkkaSb.Net.ActorSystem($"{systemName}", cfg, logger, prov);
            akkaClusterSystem.Start(tokenSrc.Token);

            Console.WriteLine("Press any key to stop Actor SB system.");
        }
示例#7
0
        /// <summary>
        /// Represents Main class that initialise the client and asks a response from the service
        /// </summary>
        static async Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            CancellationTokenSource src = new CancellationTokenSource();
            ILogger logger = generateLogger();
            var     cfg    = new ActorSbConfig();

            cfg.SbConnStr                  = Environment.GetEnvironmentVariable("SbConnStr");
            cfg.ReplyMsgQueue              = "actorsystem/rcvlocal";
            cfg.RequestMsgTopic            = "actorsystem/actortopic";
            cfg.TblStoragePersistenConnStr = null;
            cfg.ActorSystemName            = "inst701";
            logger?.LogInformation("Loaded Configuration, Messaging-Queue:" + cfg.ReplyMsgQueue + ", Message-Topic:" + cfg.RequestMsgTopic);
            ActorSystem sysLocal = new ActorSystem($"TestDotNetWorking", cfg);

            logger?.LogInformation("Created ActorSystem");
            ActorReference actorRef1 = sysLocal.CreateActor <MyActor>(1);
            ActorReference actorRef2 = sysLocal.CreateActor <MyActor>(77);

            logger?.LogInformation("Created two Actor references, actorReference1: " + actorRef1 + ", actorReference2: " + actorRef2);
            logger?.LogInformation("Asking 42 long value from actorReference1");
            var response = await actorRef1.Ask <long>((long)42);

            logger?.LogInformation("Received result: " + response);
            logger?.LogInformation("Asking 7 long value from actorReference1");
            response = actorRef1.Ask <long>((long)7).Result;
            logger?.LogInformation("Received result: " + response);
            var resp = await actorRef1.Ask <DeviceState>(new DeviceState()
            {
                Color = "green", State = true
            });

            var stringResponse = await actorRef1.Ask <DateTime>(DateTime.Now);

            logger?.LogInformation("Successfully tested the functionality");
        }