Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            IServiceCollection collection = new ServiceCollection();

            collection.AddTransient <TypedWorker>();

            var config = ConfigurationFactory.ParseString(
                @"akka.actor.deployment {
  /workers {
    router = consistent-hashing-group
    routees.paths = [""/user/Worker1"", ""/user/Worker2""]
  }
}");

            // Create the ActorSystem
            using (var system = ActorSystem.Create("MySystem"))
            {
                var provider = collection.BuildAkkaServiceProvider();
                IDependencyResolver resolver = new DotNetCoreDependencyResolver(provider, system);

                // Register the actors with the system
                system.ActorOf(system.DI().Props <TypedWorker>(), "Worker1");
                system.ActorOf(system.DI().Props <TypedWorker>(), "Worker2");

                // Create the router
                var       workers = new[] { "/user/Worker1", "/user/Worker2" };
                IActorRef router  = system.ActorOf(Props.Empty.WithRouter(new RoundRobinGroup(workers)));

                // Create the message to send
                TypedActorMessage message = new TypedActorMessage
                {
                    Id   = 1,
                    Name = Guid.NewGuid().ToString()
                };

                // Send the message to the router
                router.Tell(new Broadcast(message));

                system.WhenTerminated.Wait();
            }
        }
Ejemplo n.º 2
0
        private static void WithHashPool()
        {
            var builder = new ContainerBuilder();

            builder.RegisterType <TypedWorker>();

            var container = builder.Build();


            using (var system = ActorSystem.Create("MySystem"))
            {
                var propsResolver =
                    new AutoFacDependencyResolver(container, system);

                var router = system.ActorOf(propsResolver.Create <TypedWorker>().WithRouter(FromConfig.Instance), "router1");

                Task.Delay(500).Wait();
                Console.WriteLine("Sending Messages");

                for (var i = 0; i < 5; i++)
                {
                    for (var j = 0; j < 7; j++)
                    {
                        var msg = new TypedActorMessage {
                            Id = j, Name = Guid.NewGuid().ToString()
                        };
                        var ms = new AnotherMessage {
                            Id = j, Name = msg.Name
                        };

                        var envelope = new ConsistentHashableEnvelope(ms, msg.Id);

                        router.Tell(msg);
                        router.Tell(envelope);
                    }
                }
                Console.WriteLine("Hit Enter to close");
                Console.ReadLine();
            }
        }
Ejemplo n.º 3
0
        private static void WithHashPool()
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<TypedWorker>();

            var container = builder.Build();


            using (var system = ActorSystem.Create("MySystem"))
            {
                var propsResolver =
                    new AutoFacDependencyResolver(container, system);

                var router = system.ActorOf(system.DI().Props<TypedWorker>().WithRouter(FromConfig.Instance), "router1");

                Task.Delay(500).Wait();
                Console.WriteLine("Sending Messages");

                for (var i = 0; i < 5; i++)
                {
                    for (var j = 0; j < 7; j++)
                    {

                        var msg = new TypedActorMessage { Id = j, Name = Guid.NewGuid().ToString() };
                        var ms = new AnotherMessage { Id = j, Name = msg.Name };

                        var envelope = new ConsistentHashableEnvelope(ms, msg.Id);

                        router.Tell(msg);
                        router.Tell(envelope);

                    }
                }
                Console.WriteLine("Hit Enter to close");
                Console.ReadLine();
            }

            
        }
Ejemplo n.º 4
0
        private static void WithHashPool()
        {
            Ninject.IKernel container = new Ninject.StandardKernel();
            container.Bind <TypedWorker>().To(typeof(TypedWorker));


            using (var system = ActorSystem.Create("MySystem"))
            {
                var propsResolver =
                    new NinjectDependencyResolver(container, system);

                var router = system.ActorOf(propsResolver.Create <TypedWorker>().WithRouter(FromConfig.Instance), "router1");

                Task.Delay(500).Wait();
                Console.WriteLine("Sending Messages");

                for (var i = 0; i < 5; i++)
                {
                    for (var j = 0; j < 7; j++)
                    {
                        var msg = new TypedActorMessage {
                            Id = j, Name = Guid.NewGuid().ToString()
                        };
                        var ms = new AnotherMessage {
                            Id = j, Name = msg.Name
                        };

                        var envelope = new ConsistentHashableEnvelope(ms, msg.Id);

                        router.Tell(msg);
                        router.Tell(envelope);
                    }
                }
            }


            Console.ReadLine();
        }
Ejemplo n.º 5
0
        private static void WithHashPool()
        {
            using (var system = ActorSystem.Create("MySystem"))
            {
                IWindsorContainer container = new WindsorContainer();
                container.Register(Component.For <TypedWorker>().Named("TypedWorker").LifestyleTransient());



                var propsResolver =
                    new WindsorDependencyResolver(container, system);

                var router = system.ActorOf(system.DI().Props <TypedWorker>().WithRouter(FromConfig.Instance), "router1");

                Task.Delay(500).Wait();
                Console.WriteLine("Sending Messages");
                for (var i = 0; i < 5; i++)
                {
                    for (var j = 0; j < 7; j++)
                    {
                        var msg = new TypedActorMessage {
                            Id = j, Name = Guid.NewGuid().ToString()
                        };
                        var ms = new AnotherMessage {
                            Id = j, Name = msg.Name
                        };

                        var envelope = new ConsistentHashableEnvelope(ms, msg.Id);

                        router.Tell(msg);
                        router.Tell(envelope);
                    }
                }
                Console.WriteLine("Hit Enter to exit");
                Console.ReadLine();
            }
        }
Ejemplo n.º 6
0
        private static void WithHashPool()
        {
            IContainer container = new Container(cfg =>
            {
                cfg.For<TypedWorker>().Use<TypedWorker>().Named("TypedWorker").LifecycleIs<TransientLifecycle>();
            });
            
            using (var system = ActorSystem.Create("MySystem"))
            {
                var propsResolver =
                    new StructureMapDependencyResolver(container, system);

                var router = system.ActorOf(system.DI().Props<TypedWorker>().WithRouter(FromConfig.Instance), "router1");

                Task.Delay(500).Wait();
                Console.WriteLine("Sending Messages");
                for (var i = 0; i < 5; i++)
                {
                    for (var j = 0; j < 7; j++)
                    {

                        var msg = new TypedActorMessage { Id = j, Name = Guid.NewGuid().ToString() };
                        var ms = new AnotherMessage { Id = j, Name = msg.Name };

                        var envelope = new ConsistentHashableEnvelope(ms, msg.Id);

                        router.Tell(msg);
                        router.Tell(envelope);

                    }
                }
                Console.WriteLine("Hit Enter to exit");
                Console.ReadLine();
            }


        }