예제 #1
0
        private static void Main(string[] args)
        {
            string mqHost = ConfigurationManager.AppSettings["RabbitMQHost"];

            using (IBus bus = RabbitHutch.CreateBus(mqHost, reg => reg.Register <IEasyNetQLogger>(log => new NullLogger())))
            {
                Console.WriteLine("请输入发送的消息:");
                while (true)
                {
                    string orderName = Console.ReadLine();
                    bus.Publish(new DtoOrder111
                    {
                        Id   = 100,
                        Name = orderName
                    });
                }
            }
        }
예제 #2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Preparing to write to queue Producer 2!");

            var bus = RabbitHutch.CreateBus("host=localhost");

            for (int i = 0; i < 100; i++)
            {
                var message = new MessageSample
                {
                    Id       = i + 1,
                    Category = "Producer2",
                    Content  = $"Conteudo 2{i}"
                };

                bus.Publish(message, message.Category);
            }
        }
예제 #3
0
        static void Publish()
        {
            var rand = new Random();
            var bus  = RabbitHutch.CreateBus("host=localhost");

            while (true)
            {
                var message = new MyMessage
                {
                    Name     = $"User-{rand.Next(1, 200)}",
                    ShoeSize = rand.Next(1, 50),
                    Address  = $"{rand.Next(1, 200) }Next Lane"
                };
                bus.Publish(message);
                Console.WriteLine($"Published Message for{message.Name}");
                Thread.Sleep(1000);
            }
        }
예제 #4
0
        static void Main(string[] args)
        {
            var bus = RabbitHutch.CreateBus("host=localhost");

            bus.Respond <TestRequestMessage, TestResponseMessage>(HandleRequest);
            bus.RespondAsync <TestAsyncRequestMessage, TestAsyncResponseMessage>(HandleAsyncRequest);

            Console.WriteLine("Waiting to service requests");
            Console.WriteLine("Ctrl-C to exit");

            Console.CancelKeyPress += (source, cancelKeyPressArgs) =>
            {
                bus.Dispose();
                Console.WriteLine("Shut down complete");
            };

            Thread.Sleep(Timeout.Infinite);
        }
예제 #5
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddDbContext <UsersContext>(options => options.UseLazyLoadingProxies()
                                                 .UseSqlServer(Configuration.GetConnectionString("local")));
            services.AddSingleton(RabbitHutch.CreateBus($"host={Configuration.GetSection("RabbitMqHost").Value}"));
            services.AddTransient(typeof(IRepository <>), typeof(Repository <>));
            services.AddTransient <IUnitOfWork, UnitOfWork>();
            services.AddTransient <IUsersService, UsersService>();
            services.AddTransient <IBansService, BansService>();
            services.AddTransient <IFriendsService, FriendsService>();
            services.AddTransient <ISubscriptionsService, SubscriptionsService>();

            services.ConfigureAuthentication(Configuration);
            services.ConfigureAutoMapper();
            services.AddSwaggerDocumentation();
            services.AddSingleton <ServiceBusListener>();
        }
예제 #6
0
        private static void Init(string connectionString)
        {
            if (isInitialized == null)
            {
                lock (initLock)
                {
                    if (isInitialized == null)
                    {
                        _bus = RabbitHutch.CreateBus(connectionString,
                                                     services => services.Register <ITypeNameSerializer, TypeNameSerializer>()
                                                     .Register <IConventions, MyConventions>());


                        isInitialized = "";
                    }
                }
            }
        }
예제 #7
0
        static void Main(string[] args)
        {
            var bus = RabbitHutch.CreateBus("host=localhost");

            while (true)
            {
                var msg     = Console.ReadLine();
                var message = new CardPaymentRequestMessage
                {
                    Amount         = DateTime.Now.Hour,
                    CardHolderName = msg,
                    CardNumber     = DateTime.Now.Year.ToString(),
                    ExpiryDate     = DateTime.Now.Month.ToString()
                };
                var response = bus.Request <CardPaymentRequestMessage, CardPaymentResponseMessage>(message);
                Console.WriteLine(response.AuthCode);
            }
        }
예제 #8
0
        internal static IServiceCollection AddServiceLayer(this IServiceCollection services, IConfiguration configuration)
        {
            var rabbitString = $"host={configuration["RabbitMQ:HostName"]};";

            rabbitString += "virtualHost=" + (configuration["RabbitMQ:VirtualHost"] ?? "/") + ";";
            rabbitString += $"username={configuration["RabbitMQ:User"]};";
            rabbitString += $"password={configuration["RabbitMQ:Password"]}";

            services
            .AddSingleton <IBus>(RabbitHutch.CreateBus(rabbitString))
            .AddSingleton <IPatientPublisher, PatientPublisher>()
            .AddTransient <IGenderService, GenderService>()
            .AddTransient <IReligionService, ReligionService>()
            .AddTransient <IAllergyService, AllergyService>()
            .AddTransient <IPatientService, Services.PatientService>();

            return(services);
        }
예제 #9
0
        private static void Main(string[] args)
        {
            string mqHost = ConfigurationManager.AppSettings["RabbitMQHost"];

            using (IBus bus = RabbitHutch.CreateBus(mqHost, reg => reg.Register <IEasyNetQLogger>(log => new NullLogger())))
            {
                Console.WriteLine("请输入发送的主题:shanghai.beijing或lasa.beijing或shanghai.chongqing等.");
                while (true)
                {
                    string topic = Console.ReadLine();
                    bus.Publish(new DtoOrderTopic
                    {
                        Id   = 100,
                        Name = "主题为" + topic + "的消息"
                    }, topic);
                }
            }
        }
예제 #10
0
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="SequenceAmount">Количество одновременно расчитываемых последовательностей</param>
        /// <param name="webAPIString">Адрес хоста web-службы</param>
        /// <param name="rabbitService">Адрес RabbitMQ службы</param>
        public FibonacciPool(int SequenceAmount, string webAPIString, string rabbitService)
        {
            _webApiLink       = webAPIString;
            _rabbitServiceURL = rabbitService;

            // Подписываемся на rabbitMQ
            _bus = RabbitHutch.CreateBus(_rabbitServiceURL);
            _bus.Subscribe <Tuple <string, int> >(Guid.NewGuid().ToString(), OnResponse);

            // Создаём словарь последовательностей
            for (int i = 0; i < SequenceAmount; i++)
            {
                string currentGuid = Guid.NewGuid().ToString();
                _sequences[currentGuid] = new FibonacciSequence();
                keys.Add(currentGuid);
            }
            QueryTask = new Task(() => Query(cancellationToken.Token));
        }
예제 #11
0
        public void Init()
        {
            #region EasyNQ Connection
            //var bus = RabbitHutch.CreateBus("host=" + _hostName + ":" + _portNumber + ";username="******";password="******"");
            bus = RabbitHutch.CreateBus("host=" + _hostName);
            #endregion

            bus.Respond <MyRequest, MyResponse>(_request => new MyResponse {
                Text = "Server responding to " + _request.Text
            });

            //bus.RespondAsync<MyRequest, MyResponse>(request =>
            //    Task.Factory.StartNew(() =>
            //    {
            //        Response(request)
            //    }
            //);
        }
예제 #12
0
        private void Connect()
        {
            if (IsConnected)
            {
                return;
            }

            var policy = Policy
                         .Handle <EasyNetQException>()
                         .Or <BrokerUnreachableException>()
                         .WaitAndRetry(3, retryAttempt =>
                                       TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));

            policy.Execute(() => {
                _bus = RabbitHutch.CreateBus(_connectionString);
                Console.WriteLine($"Intentando");
            });
        }
예제 #13
0
        public void TestQueueWay3()
        {
            IAdvancedBus bus = RabbitHutch.CreateBus(ConfigurationAppSetting.RabbitMQHost, reg => reg.Register <IEasyNetQLogger>(log => new Log4NetLogger())).Advanced;
            IExchange    ex  = bus.ExchangeDeclare("JinRi.Notify.Test.TestQueueWay3Ex", "direct");
            IQueue       qu1 = bus.QueueDeclare("JinRi.Notify.Test.TestQueueWay3Queue1");
            IQueue       qu2 = bus.QueueDeclare("JinRi.Notify.Test.TestQueueWay3Queue2");
            IQueue       qu3 = bus.QueueDeclare("JinRi.Notify.Test.TestQueueWay3Queue3");
            IBinding     bi1 = bus.Bind(ex, qu1, "0");
            IBinding     bi2 = bus.Bind(ex, qu2, "1");
            IBinding     bi3 = bus.Bind(ex, qu3, "2");

            for (int i = 0; i < 100; i++)
            {
                int md = i % 3;
                bus.Publish <string>(ex, md.ToString(), false, false, new Message <string>(i.ToString()));
            }
            Thread.Sleep(5000);
        }
예제 #14
0
        private void TryConnect()
        {
            if (IsConnected)
            {
                return;
            }

            var policy = Policy.Handle <EasyNetQException>()
                         .Or <BrokerUnreachableException>()
                         .WaitAndRetry(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));

            policy.Execute(() =>
            {
                _bus         = RabbitHutch.CreateBus(connectionString: _connectionString);
                _advancedBus = _bus.Advanced;
                _advancedBus.Disconnected += OnDisconnect;
            });
        }
        public ActionResult AddNewOrder([FromBody] DTOs.Order newOrder)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var orderId = Guid.NewGuid();

            newOrder.Id      = orderId;
            newOrder.Created = DateTime.UtcNow;

            try
            {
                Datastore.TryAdd(orderId, newOrder);
            }
            catch (Exception e)
            {
                string message = "We could not add the new order.";
                Log.Error(message + $" Reason: {0}", e);

                throw new OrderServiceException(message);
            }

            // TODO: Retry & exception handling
            using (var bus = RabbitHutch.CreateBus(_settings.RabbitMqConnectionString))
            {
                var identity  = User.Identity as ClaimsIdentity;
                var subjectId = identity?.Claims.FirstOrDefault(c => c.Type == "sub")?.Value;

                var message = new NewOrderMessage
                {
                    UserId = subjectId,
                    Order  = Mapper.Map <Order>(newOrder)
                };

                // TODO: Exception handling
                bus.Publish(message);

                _orderHubContext.Clients.Group(message.UserId).SendAsync("orderCreated");
            }

            return(Ok());
        }
예제 #16
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json");

            //.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true, true);

            Configuration = builder.Build();
            var services = new ServiceCollection();

            services.AddSingleton <IConfigurationRoot>(Configuration);
            services.AddSingleton(new LoggerFactory()
                                  .AddConsole()
                                  .AddDebug());
            services.AddLogging();

            // app settings
            services.Configure <AppSettings>(Configuration.GetSection("AppSettings"));
            var provider   = services.BuildServiceProvider();
            var connection = new ConnectionConfiguration();

            connection.Port     = 5672;
            connection.UserName = "******";
            connection.Password = "******";

            connection.Hosts = new List <HostConfiguration> {
                new HostConfiguration()
                {
                    Host = @"rabbitmq", Port = 5672
                }
            };
            connection.ConnectIntervalAttempt = TimeSpan.FromSeconds(4);
            connection.RequestedHeartbeat     = 6;
            connection.Timeout = 60;
            var _bus = RabbitHutch.CreateBus(connection, ser => ser.Register <IEasyNetQLogger>(logger => new DoNothingLogger()));


            var subscriber = new AutoSubscriber(_bus, "#");

            subscriber.Subscribe(Assembly.GetExecutingAssembly());
            Console.WriteLine("Notifications EventHandler Listening");
            string typed = Console.ReadLine();
        }
예제 #17
0
파일: Startup.cs 프로젝트: nekrasovgit/ASP
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            string connectionRabbitMQ = Configuration.GetConnectionString("Config");

            services.AddSingleton(RabbitHutch.CreateBus(connectionRabbitMQ).Advanced);
            services.AddScoped <IPublisher, Publisher.Publisher>();

            services.AddTransient <CancelReservationJob>();
            services.AddTransient <RemoveReservationJob>();

            services.Configure <QuartzOptions>(Configuration.GetSection("Quartz"));

            services.AddQuartz(q =>
            {
                q.UseMicrosoftDependencyInjectionScopedJobFactory();

                var jobKey = new JobKey("awesome job", "awesome group");


                q.ScheduleJob <CancelReservationJob>(t => t
                                                     .WithIdentity("Simple Trigger")
                                                     .StartNow()
                                                     .WithCronSchedule("* * * * * ?")
                                                     .WithDescription("my awesome simple trigger")
                                                     );

                q.ScheduleJob <RemoveReservationJob>(t => t
                                                     .WithIdentity("Simple Trigger")
                                                     .StartNow()
                                                     .WithCronSchedule("* * * * * ?")
                                                     .WithDescription("my awesome simple trigger")
                                                     );
            });



            // Quartz.Extensions.Hosting hosting
            services.AddQuartzServer(options =>
            {
                // when shutting down we want jobs to complete gracefully
                options.WaitForJobsToComplete = true;
            });
            services.AddControllers();
        }
예제 #18
0
        public IEnumerable <Author> GetAuthorsSecret()
        {
            IEnumerable <Author> Authors = _context.Authors;

            var Bus = RabbitHutch.CreateBus("host=localhost");
            ConcurrentStack <RabbitBookAuthor> BookAuthorCollection = new ConcurrentStack <RabbitBookAuthor>();

            Bus.Receive <RabbitBookAuthor>("BookAuthor", msg =>
            {
                BookAuthorCollection.Push(msg);
            });
            Thread.Sleep(5000);

            foreach (RabbitBookAuthor a in BookAuthorCollection)
            {
                Author c = new Author()
                {
                    AuthorName = a.AuthorName, AuthorRating = a.AuthorRating
                };
                _context.Authors.Add(c);
            }
            _context.SaveChanges();

            foreach (RabbitBookAuthor a in BookAuthorCollection)
            {
                int c_id = 0;
                foreach (Author c in _context.Authors)
                {
                    if (a.AuthorName == c.AuthorName)
                    {
                        c_id = c.ID;
                    }
                }

                Book ar = new Book()
                {
                    BookName = a.BookName, PageCount = a.BookPageCount, AuthorID = c_id
                };
                _context.Books.Add(ar);
            }
            _context.SaveChanges();

            return(Authors);
        }
예제 #19
0
        public static void Main(string[] args)
        {
            if (args.Length < 1)
            {
                Console.Error.WriteLine("Usage: {0} [type]", Environment.GetCommandLineArgs()[0]);
                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadLine();
                Environment.ExitCode = 1;
                return;
            }

            try
            {
                try
                {
                    Console.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), args[0], true);
                }
                catch { }

                Console.Error.WriteLine("Consumer listening...");
                Console.Error.WriteLine("Type={0}", args[0]);

                var rountingKey = args[0];
                var advancedBus = RabbitHutch.CreateBus(AppKeys.Get(Constants.RabbitMqConnectionString)).Advanced;
                var exchange    = advancedBus.ExchangeDeclare(AppKeys.Get(Constants.RabbitMqExchangeName), ExchangeType.Direct);
                var queue       = advancedBus.QueueDeclare(string.Format("FirstScreen.Queue.{0}", rountingKey));
                advancedBus.Bind(exchange, queue, rountingKey);

                advancedBus.Consume(queue, (body, properties, info) => Task.Factory.StartNew(() =>
                {
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine("{0}", message);
                }));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error...");
                Console.WriteLine(ex.Message);
                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadKey();
                Environment.ExitCode = 1;
                return;
            }
        }
예제 #20
0
        static void TestSSL()
        {
            var connection = new ConnectionConfiguration();

            connection.Port     = 5673;
            connection.UserName = "******";
            connection.Password = "******";
            connection.Product  = "SSLTest";

            var host1 = new HostConfiguration();

            host1.Host                       = "192.168.0.169";
            host1.Port                       = 5673;
            host1.Ssl.Enabled                = true;
            host1.Ssl.ServerName             = "www.shiyx.top";
            host1.Ssl.CertPath               = @"E:\git\RabbitMqDemo\server.pfx";
            host1.Ssl.CertPassphrase         = "123123";
            host1.Ssl.AcceptablePolicyErrors = SslPolicyErrors.RemoteCertificateNameMismatch |
                                               SslPolicyErrors.RemoteCertificateChainErrors;

            //var host2 = new HostConfiguration();
            //host2.Host = "192.168.0.115";
            //host2.Port = 5673;
            //host2.Ssl.Enabled = true;
            //host2.Ssl.ServerName = "www.shiyx.top";
            //host2.Ssl.CertPath = @"E:\git\RabbitMqDemo\server.pfx";
            //host2.Ssl.CertPassphrase = "123123";

            connection.Hosts = new List <HostConfiguration> {
                host1
            };

            connection.Validate();

            var bus = RabbitHutch.CreateBus(connection, services => services.Register <ILogProvider>(ConsoleLogProvider.Instance));

            var message = new TextMessage {
                MessageRouter = "api.notice.zhangsan", MessageBody = "Hello Rabbit"
            };

            bus.Publish(message, x => x.WithTopic(message.MessageRouter));

            Console.WriteLine("发送成功");
        }
예제 #21
0
        public IEnumerable <City> GetCitiesSecret()
        {
            IEnumerable <City> cities = _context.Cities;

            var Bus = RabbitHutch.CreateBus("host=localhost");
            ConcurrentStack <RabbitArenaCity> arenacityCollection = new ConcurrentStack <RabbitArenaCity>();

            Bus.Receive <RabbitArenaCity>("arenacity", msg =>
            {
                arenacityCollection.Push(msg);
            });
            Thread.Sleep(5000);

            foreach (RabbitArenaCity a in arenacityCollection)
            {
                City c = new City()
                {
                    CityName = a.CityName, CityPopulation = a.CityPopulation
                };
                _context.Cities.Add(c);
            }
            _context.SaveChanges();

            foreach (RabbitArenaCity a in arenacityCollection)
            {
                int c_id = 0;
                foreach (City c in _context.Cities)
                {
                    if (a.CityName == c.CityName)
                    {
                        c_id = c.ID;
                    }
                }

                Arena ar = new Arena()
                {
                    ArenaName = a.ArenaName, Capacity = a.ArenaCapacity, CityID = c_id
                };
                _context.Arenas.Add(ar);
            }
            _context.SaveChanges();

            return(cities);
        }
예제 #22
0
        public static async Task Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Information()
                         .WriteTo.Console()
                         .WriteTo.Seq("http://localhost:5341")
                         .CreateLogger();

            try
            {
                var builder = new HostBuilder()
                              .ConfigureHostConfiguration(configHost =>
                {
                    configHost.AddEnvironmentVariables();
                    configHost.AddCommandLine(args);
                })
                              .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    config.AddJsonFile($"appsettings.json");
                    config.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true);
                })
                              .ConfigureServices((hostContext, services) =>
                {
                    services.AddSingleton <IBus>(f => RabbitHutch.CreateBus(hostContext.Configuration.GetSection("RabbitMQ")["Host"]));
                    services.AddSingleton(new MongoClient(hostContext.Configuration.GetSection("MongoDB")["Host"]));
                    services.AddSingleton <IHostedService, CheckNewScheduleBackgroundService>();
                    services.AddSingleton <IMonthHelpers, MonthHelpers>();
                })
                              .ConfigureLogging((hostContext, logging) =>
                {
                    logging.AddSerilog();
                })
                              .Build();
                await builder.RunAsync();
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host CheckNewSchedule terminated unexpectedly.");
            }
            finally
            {
                Log.CloseAndFlush();
            }
        }
예제 #23
0
        public async Task <IActionResult> Create(CategoryGroups categoryGroups)
        {
            // Check the State Model Binding
            if (ModelState.IsValid)
            {
                // Strings für TypeOfCategoryGroup schreiben
                if (categoryGroups.TypeOfCategoryGroup.Equals("0"))
                {
                    categoryGroups.TypeOfCategoryGroup = "Product";
                }
                else
                {
                    categoryGroups.TypeOfCategoryGroup = "Service";
                }

                _colibriDbContext.Add(categoryGroups);
                await _colibriDbContext.SaveChangesAsync();

                // Publish the Created Category
                using (var bus = RabbitHutch.CreateBus("host=localhost"))
                {
                    //bus.Publish(categoryGroups, "create_category_groups");
                    //await bus.PublishAsync("create_category_groups").ContinueWith(task =>
                    // {
                    //     if (task.IsCompleted && !task.IsFaulted)
                    //     {
                    //         Console.WriteLine("Task Completed");
                    //         Console.ReadLine();
                    //     }
                    // });
                    await bus.SendAsync("create_category_groups", categoryGroups);
                }


                // avoid Refreshing the POST Operation -> Redirect
                return(RedirectToAction(nameof(Index)));
                //return RedirectToAction("Index", "CategoryGroups", new { area = "Admin" });
            }
            else
            {
                // one can simply return to the Form View again for Correction
                return(View(categoryGroups));
            }
        }
예제 #24
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Starting");

            var RabbitMqUserName = "******";
            var RabbitMqPassword = "******";

            using (var bus = RabbitHutch.CreateBus($"host=rabbitmq;username={RabbitMqUserName};password={RabbitMqPassword}"))
            {
                int I = 1;

                while (true)
                {
                    var PubSubMsg = new PubSubMessage($"Pub/Sub message {I}");
                    var QueueMsg  = new QueueMessage($"Queue message {I}");

                    try
                    {
                        bus.PubSub.Publish(PubSubMsg);

                        Console.WriteLine($"Published message: '{PubSubMsg.Text}'");
                    }
                    catch
                    {
                        Console.WriteLine($"Erro publishing message: '{PubSubMsg.Text}'");
                    }

                    try
                    {
                        bus.PubSub.Publish(QueueMsg);

                        Console.WriteLine($"Published message: '{QueueMsg.Text}'");
                    }
                    catch
                    {
                        Console.WriteLine($"Erro publishing message: '{QueueMsg.Text}'");
                    }

                    await Task.Delay(500);

                    I++;
                }
            }
        }
예제 #25
0
        public static async Task Main(string[] args)
        {
            Configuration = await GetInitializedConfig();

            Log.Logger = await InitializeLogs();

            Log.Information("Logs inicializados...");

            Log.Information("Inicializando App");

            // var bus = RabbitHutch.CreateBus($"host={Configuration["RABBIT:HOST"]}", services => services.Register(c => new MyConventions()));
            var bus = RabbitHutch.CreateBus($"host={Configuration["RABBIT:HOST"]}");

            bus.Advanced.Container.Resolve <IConventions>().ErrorQueueNamingConvention = (con) => "MyErrorQueueNaming";

            InitializeApp(bus);

            Console.Read();
        }
        private ItemResponse ListenToRetailerResponse(string customerID)
        {
            ItemResponse response = null;

            using (var bus = RabbitHutch.CreateBus("host=localhost"))
            {
                // Declare an exchange:
                var exchange = bus.Advanced.ExchangeDeclare("Customers", ExchangeType.Topic);
                // Declare a queue
                var queue = bus.Advanced.QueueDeclare("Customer" + customerID, false, true, false, true);
                // Bind queue to exchange (the routing key is ignored by a fanout exchange):
                bus.Advanced.Bind(exchange, queue, customerID);
                // Synchronous consumer:
                bus.Advanced.Consume <ItemResponse>(queue, (message, info) =>
                                                    response = message.Body);
                Thread.Sleep(TimeSpan.FromSeconds(1));
            }
            return(response);
        }
예제 #27
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRouting(options => options.LowercaseUrls = true);
            services.AddControllersWithViews();
            var db = new InMemoryCarDatabase("JsonData");

            services.AddSingleton <ICarDatabase>(db);

            var bus = RabbitHutch.CreateBus(AMQP);

            services.AddSingleton <IBus>(bus);

            services.AddSingleton <AutobarnSchema>();
            services
            .AddGraphQL(options => options.EnableMetrics = false)
            .AddSystemTextJson();

            services.AddSignalR();
        }
예제 #28
0
        public static void Main(string[] args)
        {
            IBus bus = RabbitHutch.CreateBus(ConfigurationManager.AppSettings["easynetq"]);

            HostFactory.Run(x =>
            {
                x.Service <FileIndexerService>(s =>
                {
                    s.ConstructUsing(name => new FileIndexerService(bus));
                    s.WhenStarted(tc => tc.Start());
                    s.WhenStopped(tc => tc.Stop());
                });
                x.RunAsLocalSystem();

                x.SetDescription("Manage files indexing.");
                x.SetDisplayName("FileIndexer");
                x.SetServiceName("FileIndexer");
            });
        }
예제 #29
0
        protected override void ConfigureServices(
            IServiceCollection serviceCollection)
        {
            // Add singleton of IBus for EasyNetQ.
            serviceCollection.AddSingleton <IBus>(
                RabbitHutch.CreateBus($"host={this.configuration["RabbitMQ:Host"]}"));

            // Dictionary for contianing broadcast for local order request.
            serviceCollection.AddSingleton <IDictionary <string,
                                                         Retailer.Messages.OrderRequest> >(new Dictionary <string, Retailer.Messages.OrderRequest>());

            // Dictionary for containing broadcast order request to all warehouses.
            serviceCollection
            .AddSingleton <IDictionary <string,
                                        Aggregate <Retailer.Messages.OrderRequest, Warehouse.Messages.OrderResponse> > >(new Dictionary <string,
                                                                                                                                         Aggregate <Retailer.Messages.OrderRequest, Warehouse.Messages.OrderResponse> >());

            serviceCollection.AddMediatR(typeof(RetailerClient));
        }
예제 #30
0
        //conectar no rabbitHuct
        private void TryConnect()
        {
            if (IsConnected)
            {
                return;
            }

            var policy = Policy.Handle <EasyNetQException>()
                         .Or <BrokerUnreachableException>() //não ta disponivel a conexão
                         .WaitAndRetry(3, retryAttempt =>   // tentar 3 tentivasas
                                       TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)));

            policy.Execute(() =>
            {
                _bus         = RabbitHutch.CreateBus(_connectionString);
                _advancedBus = _bus.Advanced;              //isso aqui vai instancia
                _advancedBus.Disconnected += OnDisconnect; //libera alguns itens, get de fila e etc
            });
        }