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); }
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); }
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(); }
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); }
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); }
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; }