예제 #1
0
        protected override void apply(Type pluginType, IConfiguredInstance instance)
        {
            var messagePublisher = GetMessagePublisherParameter(instance);

            if (messagePublisher == null)
            {
                return;
            }

            var environment = GetEnvironmentName();

            var messageQueueConnectionString = GetMessageQueueConnectionString(environment);

            if (string.IsNullOrEmpty(messageQueueConnectionString))
            {
                _logger.Info("Using FileSystemMessagePublisher (messageQueueConnectionString not found)");

                var groupFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + $"/{_serviceName}/";

                var publisher = new FileSystemMessagePublisher(groupFolder);
                instance.Dependencies.AddForConstructorParameter(messagePublisher, publisher);
            }
            else
            {
                _logger.Info("Using TopicMessagePublisher");
                var publisher = new TopicMessagePublisher(messageQueueConnectionString, _logger);
                instance.Dependencies.AddForConstructorParameter(messagePublisher, publisher);
            }
        }
예제 #2
0
        public FileSystemSubSystem(string storageDir = null)
        {
            var publisher         = new FileSystemMessagePublisher(storageDir ?? GetDefaultStorageDir());
            var subscriberFactory = new FileSystemMessageSubscriberFactory(storageDir ?? GetDefaultStorageDir());

            Init(publisher, subscriberFactory);
        }
예제 #3
0
        protected override void apply(Type pluginType, IConfiguredInstance instance)
        {
            var messagePublisher = GetMessagePublisherParameter(instance);

            if (messagePublisher == null)
            {
                return;
            }

            var environment          = GetEnvironmentName();
            var connectionStringName = GetConnectionStringName(instance);

            var messageQueueConnectionString = GetMessageQueueConnectionString(environment, connectionStringName);

            if (string.IsNullOrEmpty(messageQueueConnectionString))
            {
                var groupFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/EAS_Queues/";

                var publisher = new FileSystemMessagePublisher(groupFolder);
                instance.Dependencies.AddForConstructorParameter(messagePublisher, publisher);
            }
            else
            {
                var publisher = new TopicMessagePublisher(messageQueueConnectionString, new NLogLogger(typeof(TopicMessagePublisher)));
                instance.Dependencies.AddForConstructorParameter(messagePublisher, publisher);
            }
        }
        private static void LoadFileSystem <T>(
            out IMessagePublisher publisher,
            out IMessageSubscriber <T> subscriber) where T : new()
        {
            WriteColoredText("Storage dir (%temp%/[Guid]): ");
            var dir = Console.ReadLine();

            if (string.IsNullOrWhiteSpace(dir))
            {
                dir = Path.Combine(Environment.GetEnvironmentVariable("TEMP"), Guid.NewGuid().ToString());
            }

            publisher = new FileSystemMessagePublisher(dir);

            var subscriberFactory = new FileSystemMessageSubscriberFactory(dir);

            subscriber = subscriberFactory.GetSubscriber <T>();
        }