/// <summary>
        ///     Start service.
        /// </summary>
        public void Start() {
            if (!File.Exists("config.json")) {
                Logger.Error("Configuration file \"config.json\" was not found in the application directory!");
                return;
            }

            // configuration
            var configurationBuilder = new ConfigurationBuilder().AddJsonFile("config.json").Build();
            var configuration = new Configuration.Configuration();
            configurationBuilder.Bind(configuration);

            // do the dirty work
            foreach (var mailBox in configuration.MailBoxes) {
                var cancellationTokenSource = Scheduler.Interval(mailBox.Interval, () => {
                    var mailBoxProcessor = new MailBoxProcessor(mailBox);

                    try {
                        mailBoxProcessor.Process();
                    }
                    catch (Exception ex) {
                        Logger.Error($"Could not process the MailBox {mailBox.Identifier}!", ex);
                    }
                });

                _cancellationTokenSources.Add(cancellationTokenSource);
            }
        }
示例#2
0
        public void Main(string[] args)
        {
            var runtimeConfig = new ConfigurationBuilder()
                .AddCommandLine(args)
                .Build();

            var options = new Options();
            runtimeConfig.Bind(options);

            var queueConfig = new ConfigurationBuilder(".")
                .AddJsonFile("queues.json")
                .Build()
                .GetSection(options.QueueType);

            var services = BuildServiceProvider(options, queueConfig);
            var logger = services.GetRequiredService<ILogger<Program>>();
            var handlerFactory = services.GetRequiredService<IMessageHandlerFactory>();
            var queueFactory = services.GetRequiredService<IMessageQueueFactory>();

            var queue = queueFactory.Get(options.ListenTo);
            queue.Listen(msg =>
            {
                var handler = handlerFactory.GetHandler(msg.Body.GetType());
                handler.Handle(msg, queue);
            });
        }
示例#3
0
        public void Main(string[] args)
        {
            var options = new Options();
            var config = new ConfigurationBuilder()
                .AddCommandLine(args)
                .Build();

            config.Bind(options);

            var type = Type.GetType(options.SocketType);

            var socket = _services.GetService(type) as AbstractSocket;

            socket.Start(options);

            Console.ReadLine();
        }