Exemplo n.º 1
0
        public FileSystemSubSystem(string storageDir = null)
        {
            var publisher         = new FileSystemMessagePublisher(storageDir ?? GetDefaultStorageDir());
            var subscriberFactory = new FileSystemMessageSubscriberFactory(storageDir ?? GetDefaultStorageDir());

            Init(publisher, subscriberFactory);
        }
        protected override void apply(Type pluginType, IConfiguredInstance instance)
        {
            var subscriberFactory = GetMessageSubscriberFactoryParameter(instance);

            if (subscriberFactory == 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 factory     = new FileSystemMessageSubscriberFactory(groupFolder);

                instance.Dependencies.AddForConstructorParameter(subscriberFactory, factory);
            }
            else
            {
                var subscriptionName = TopicSubscriptionHelper.GetMessageGroupName(instance.Constructor.DeclaringType);

                var factory = new TopicSubscriberFactory(messageQueueConnectionString, subscriptionName, new NLogLogger(typeof(TopicSubscriberFactory)));

                instance.Dependencies.AddForConstructorParameter(subscriberFactory, factory);
            }
        }
        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>();
        }
        protected override void apply(Type pluginType, IConfiguredInstance instance)
        {
            var factoryParameter = instance?.Constructor?.GetParameters().FirstOrDefault(p => p.ParameterType == typeof(IMessageSubscriberFactory));

            if (factoryParameter == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(_config.MessageServiceBusConnectionString))
            {
                var groupFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), _serviceName);
                var factory     = new FileSystemMessageSubscriberFactory(groupFolder);

                instance.Dependencies.AddForConstructorParameter(factoryParameter, factory);
            }
            else
            {
                var subscriptionName = TopicSubscriptionHelper.GetMessageGroupName(instance.Constructor.DeclaringType);
                var factory          = new TopicSubscriberFactory(_config.MessageServiceBusConnectionString, subscriptionName, _logger);

                instance.Dependencies.AddForConstructorParameter(factoryParameter, factory);
            }
        }