public async Task <int> Execute()
        {
            try
            {
                var configuration        = new RabbitMQHostConfiguration();
                var configurationManager = new RabbitMQHostConfigurationManager();
                await configurationManager.Initialize(configuration);

                var pingHandler = new PingHandler(Id);
                configuration.AddHandlingRules(pingHandler, (ht, mt) => "Pings");

                var cancellationTokenSource = new CancellationTokenSource();
                var cancellationToken       = cancellationTokenSource.Token;
                using (var host = RabbitMQHost.Start(configuration, cancellationToken))
                {
                    Console.WriteLine($"[{Id}] Listening...");
                    await Execute(host, cancellationToken);

                    await UserInterrupt.Wait(cancellationToken);
                }
                cancellationTokenSource.Cancel();
            }
            catch (OperationCanceledException)
            {
                // Ignore
            }
            Console.WriteLine($"[{Id}] Stopping...");
            return(0);
        }
        public static async Task <RabbitMQHostConfiguration> LoadConfiguration(string sectionName             = "platibus.rabbitmq",
                                                                               bool processConfigurationHooks = true)
        {
            var configManager = new RabbitMQHostConfigurationManager();
            var configuration = new RabbitMQHostConfiguration();
            await configManager.Initialize(configuration, sectionName);

            if (processConfigurationHooks)
            {
                await configManager.FindAndProcessConfigurationHooks(configuration);
            }
            return(configuration);
        }
Beispiel #3
0
        private static async Task <RabbitMQHost> StartAsync(
            string configSectionName,
            Func <RabbitMQHostConfiguration, Task> configure,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            var configManager = new RabbitMQHostConfigurationManager();
            var configuration = new RabbitMQHostConfiguration();
            await configManager.Initialize(configuration, configSectionName);

#pragma warning disable 612
            await configManager.FindAndProcessConfigurationHooks(configuration);

#pragma warning restore 612
            if (configure != null)
            {
                await configure(configuration);
            }

            var server = await StartAsync(configuration, cancellationToken);

            return(server);
        }