示例#1
0
        private static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                         .MinimumLevel.Debug()
                         .WriteTo.Console()
                         .WriteTo.File(@"\Logs\EventExperiment-Services.log",
                                       rollingInterval: RollingInterval.Day,
                                       outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj} {NewLine}{Exception}")
                         .CreateLogger();

            Log.Logger.Information($"Welcome to the messaging service using events.");

            var messageGenerator   = new MessageGenerator(Log.Logger);
            var messageService     = new MessageService(Log.Logger);
            var messageTypeService = new MessageTypeSwitchService(Log.Logger);
            var eventContainer     = new EventPubSubContainer(messageService, messageTypeService)
                                     .SetUpEventConnections();

            Parallel.For(1, 100, (x) =>
            {
                Log.Logger.Information($"Item: {x}.");
                var message = messageGenerator.GenerateNewMessage();
                messageService.SendMessageEvent(message);
                var messageDetail =
                    $"Type: {message.MessageTypes:G}, Messages: {string.Join(",", message.MessageList)}.";
                Log.Logger.Information(Constants.LogMessageTemplate, message.MessageId, "Program", "Main", messageDetail);
            });

            Console.WriteLine("Press any key to continue.");
            Log.CloseAndFlush();
            Console.ReadKey();
        }
 public EventPubSubContainer(MessageService messageService, MessageTypeSwitchService typeSwitchService)
 {
     MessageService           = messageService;
     MessageTypeSwitchService = typeSwitchService;
 }