예제 #1
0
        public void ParallelPubAndSub()
        {
            if (IsCI())
            {
                return;
            }

            int count   = 0;
            var options = SpiderProvider.Value.GetRequiredService <SpiderOptions>();
            var logger  = SpiderProvider.Value.GetRequiredService <ILogger <KafkaEventBus> >();
            var mq      = new KafkaEventBus(options, logger);

            mq.Subscribe("ParallelPubAndSub", msg =>
            {
                Interlocked.Increment(ref count);
            });

            Parallel.For(0, 100, async(i) => { await mq.PublishAsync("ParallelPubAndSub", "a"); });
            int j = 0;

            while (count < 100 && j < 150)
            {
                Thread.Sleep(500);
                ++j;
            }

            Assert.Equal(100, count);
        }
예제 #2
0
        public async Task PubAndSub()
        {
            if (IsCI())
            {
                return;
            }

            int count   = 0;
            var options = SpiderProvider.Value.GetRequiredService <KafkaOptions>();
            var logger  = SpiderProvider.Value.GetRequiredService <ILogger <KafkaEventBus> >();
            var mq      = new KafkaEventBus(options, logger);

            mq.Subscribe("PubAndSub", msg => { Interlocked.Increment(ref count); });
            for (int i = 0; i < 100; ++i)
            {
                await mq.PublishAsync("PubAndSub", new Event
                {
                    Data = "a"
                });
            }

            int j = 0;

            while (count < 100 && j < 150)
            {
                Thread.Sleep(500);
                ++j;
            }

            Assert.Equal(100, count);
        }
예제 #3
0
        static void Main(string[] args)
        {
            Console.Write("Ready?");
            Console.ReadLine();
            eventBus = new KafkaEventBus(new KafkaEventBusOptions
            {
                Host          = "localhost",
                GroupId       = "demo",
                PublishToptic = "demo"
            }, null);

            var cts = new System.Threading.CancellationTokenSource();

            var task = Task.Factory.StartNew(() =>
            {
                try
                {
                    eventBus.Listening(cts.Token);
                }
                catch { }

                eventBus.Dispose();
            });

            RegisterHandlers();
            PublishEvents();

            Console.WriteLine("Waiting!");
            Console.ReadLine();
            cts.Cancel();
        }
예제 #4
0
        public KafkaEventBusTests()
        {
            var inboundEvents    = new List <Route>();
            var outboundEvents   = new List <Route>();
            var inboundCommands  = new List <Route>();
            var outboundCommands = new List <Route>();

            outboundCommands.Add(new Route("users", typeof(CreateUser)));
            inboundCommands.Add(new Route("users", typeof(CreateUser)));
            var routes = new RouteTable(inboundCommands, outboundCommands, inboundEvents, outboundEvents);

            Bus = new Kafka.KafkaEventBus("localhost:9092", new JsonSerialization(), routes);
        }
예제 #5
0
        public async Task PubAndUnSub()
        {
            if (IsCI())
            {
                return;
            }

            int count   = 0;
            var options = SpiderProvider.Value.GetRequiredService <SpiderOptions>();
            var logger  = SpiderProvider.Value.GetRequiredService <ILogger <KafkaEventBus> >();
            var mq      = new KafkaEventBus(options, logger);

            mq.Subscribe("PubAndUnSub", msg =>
            {
                Interlocked.Increment(ref count);
            });

            int i = 0;

            Task.Factory.StartNew(async() =>
            {
                for (; i < 50; ++i)
                {
                    await mq.PublishAsync("PubAndUnSub", "a");
                    await Task.Delay(100);
                }
            }).ConfigureAwait(false).GetAwaiter();
            await Task.Delay(1500);

            mq.Unsubscribe("PubAndUnSub");

            while (i < 50)
            {
                await Task.Delay(100);
            }

            Assert.True(count < 100);
        }
예제 #6
0
        public static async Task Main(string[] args)
        {
            await CreateHostBuilder(args).RunConsoleAsync();

            return;

            //using var adminClient = new AdminClientBuilder(new AdminClientConfig
            //{
            //    BootstrapServers = "172.20.20.29:30029"
            //}).Build();
            //try
            //{
            //    await adminClient.CreateTopicsAsync(new TopicSpecification[] {
            //        new TopicSpecification { Name = "Actic.Handlers.Events.External.PaidReservationCreated_StaffOrderHandler.StaffOrderCreated", ReplicationFactor = 1, NumPartitions = 1 } });
            //}
            //catch (CreateTopicsException e)
            //{
            //    Console.WriteLine($"An error occured creating topic {e.Results[0].Topic}: {e.Results[0].Error.Reason}");
            //}

            //return;

            var bus = new KafkaEventBus(new KafkaProducerConfig
            {
                BootstrapServers = "172.20.20.29:30029"
            });

            var dict = new Dictionary <string, string>()
            {
                { "name", "Pear" }
            };

            await bus.Execute(new SmppGatewayMessage { Value = "akbar" }, dict);

            //var options = Options.Create(new EventStoreConfig()
            //{
            //    Host = "localhost",
            //    UserName = "******",
            //    Password = "******",
            //    Port = 1113
            //});

            //var store = new DefaultEventStore(options);
            //await store.Connect();

            ////for (int i = 0; i < 25; i++)
            ////{
            ////    await Load(store);
            ////}

            //var user = new User("Hassan");
            //user.ChangeName("Hossein");
            //user.ChangeDecription("There are some text over here..");
            //user.ChangeName("Sajjad");

            //await store.Commit(user);
            //var services = new ServiceCollection().AddLogging(x => x.AddConsole());
            //var builder = new ContainerBuilder();

            //AddCommandQuery(builder, typeof(Program).Assembly);
            //var provider = builder.Build();
            //var processor = provider.Resolve<ICommandProcessor>();
            //var result = processor.ExecuteAsync<TestCommand, string>(new TestCommand()).Result;
        }