Esempio n. 1
0
        public async Task SendReceiveTest()
        {
            string name = "SendReceiveTest";
            int    count1 = 0, count2 = 0;

            EasyNetQServer easyNetQServer = new EasyNetQServer();

            easyNetQServer.Register(services =>
            {
                services.AddEasyNetQProducer(name, options =>
                {
                    //options.ConnectionString = connectionString;
                    options.Hosts       = hosts;
                    options.Port        = port;
                    options.Password    = password;
                    options.UserName    = userName;
                    options.VirtualHost = virtualHost;

                    options.Priority = 4;
                    options.Queue    = $"{queue}.{name}";
                });

                services.AddEasyNetQConsumer(options =>
                {
                    //options.ConnectionString = connectionString;
                    options.Hosts       = hosts;
                    options.Port        = port;
                    options.Password    = password;
                    options.UserName    = userName;
                    options.VirtualHost = virtualHost;

                    options.Priority      = 5;
                    options.PrefetchCount = 5;
                    options.Exclusive     = false;
                    options.Arguments     = arguments;
                    options.Queue         = $"{queue}.{name}";
                })
                .AddReceiver <Reciever1>(r =>
                {
                    count1++;
                    Output.WriteLine("Reciever1:" + r.Message);
                })
                .AddReceiver <Reciever2>(r =>
                {
                    count2++;
                    Output.WriteLine("Reciever2:" + r.Message);
                });
            });
            await easyNetQServer.StartAsync();

            Thread.Sleep(1000);//等待运行1秒

            var serviceProvider           = easyNetQServer.ServiceProvider;
            var factory                   = serviceProvider.GetService <IBusClientFactory>();
            var busClient                 = factory.Create(name);

            for (var i = 0; i < 10; i++)
            {
                if (i % 3 == 0)
                {
                    await busClient.SendAsync(new Reciever1()
                    {
                        Message = "message" + i
                    });
                }
                else
                {
                    await busClient.SendAsync(new Reciever2()
                    {
                        Message = "message" + i
                    });
                }
            }

            BlockUntil(() => count1 + count2 >= 10, 3000);

            Assert.Equal(4, count1);
            Assert.Equal(6, count2);

            await easyNetQServer.StopAsync();
        }
Esempio n. 2
0
        public async Task PubSubTest()
        {
            string name = "PubSubTest";
            int    count1 = 0, count2 = 0;

            EasyNetQServer easyNetQServer = new EasyNetQServer();

            easyNetQServer.Register(services =>
            {
                services.AddEasyNetQProducer(name, options =>
                {
                    //options.ConnectionString = connectionString;
                    options.Hosts       = hosts;
                    options.Port        = port;
                    options.Password    = password;
                    options.UserName    = userName;
                    options.VirtualHost = virtualHost;

                    options.PersistentMessages = true;
                    options.Priority           = 1;
                    options.Topic = $"{topic}.{name}";
                });

                services.AddEasyNetQConsumer(options =>
                {
                    //options.ConnectionString = connectionString;
                    options.Hosts       = hosts;
                    options.Port        = port;
                    options.Password    = password;
                    options.UserName    = userName;
                    options.VirtualHost = virtualHost;

                    options.AutoDelete    = true;
                    options.Durable       = true;
                    options.Queue         = $"{queue}.{name}";
                    options.Topic         = $"{topic}.{name}";
                    options.PrefetchCount = 1;
                    options.Priority      = 2;
                })
                .AddSubscriber <Subscriber>($"{name}1", r =>
                {
                    count1++;
                    Output.WriteLine($"{name}1:" + r.Message);
                })
                .AddSubscriber <Subscriber>($"{name}2", r =>
                {
                    count2++;
                    Output.WriteLine($"{name}2:" + r.Message);
                });
            });
            await easyNetQServer.StartAsync();

            Thread.Sleep(1000);//等待运行1秒

            var serviceProvider           = easyNetQServer.ServiceProvider;
            var factory                   = serviceProvider.GetService <IBusClientFactory>();
            var busClient                 = factory.Create(name);

            for (var i = 0; i < 10; i++)
            {
                await busClient.PublishAsync(new Subscriber()
                {
                    Message = "message" + i
                });
            }

            BlockUntil(() => count1 + count2 >= 10, 3000);

            Assert.Equal(10, count1 + count2);

            await easyNetQServer.StopAsync();
        }
Esempio n. 3
0
        public async Task RpcTest()
        {
            string name = "RpcTest";

            EasyNetQServer easyNetQServer = new EasyNetQServer();

            easyNetQServer.Register(services =>
            {
                services.AddEasyNetQProducer(name, options =>
                {
                    //options.ConnectionString = connectionString;
                    options.Hosts       = hosts;
                    options.Port        = port;
                    options.Password    = password;
                    options.UserName    = userName;
                    options.VirtualHost = virtualHost;

                    options.PersistentMessages = true;
                    options.Priority           = 3;
                    options.Queue = $"{queue}.{name}";
                });

                services.AddEasyNetQConsumer(options =>
                {
                    //options.ConnectionString = connectionString;
                    options.Hosts       = hosts;
                    options.Port        = port;
                    options.Password    = password;
                    options.UserName    = userName;
                    options.VirtualHost = virtualHost;

                    options.Durable       = true;
                    options.Queue         = $"{queue}.{name}";
                    options.PrefetchCount = 2;
                })
                .AddResponder <Requester, Responder>(request =>
                {
                    return(new Responder()
                    {
                        Result = $"{name}:" + request.Data
                    });
                });
            });
            await easyNetQServer.StartAsync();

            Thread.Sleep(1000);//等待运行1秒

            var serviceProvider = easyNetQServer.ServiceProvider;
            var factory         = serviceProvider.GetService <IBusClientFactory>();
            var busClient       = factory.Create(name);
            var response        = await busClient.RequestAsync <Requester, Responder>(new Requester()
            {
                Data = "message"
            });

            Thread.Sleep(3000);//等待运行3秒

            Assert.NotNull(response);

            await easyNetQServer.StopAsync();
        }