コード例 #1
0
        public void Subscribe(string topicName, string subscriptionName, Action <ISubscriptionConfigurator> callback = null)
        {
            if (string.IsNullOrWhiteSpace(topicName))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(topicName));
            }

            if (string.IsNullOrWhiteSpace(subscriptionName))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(subscriptionName));
            }

            subscriptionName = _publishTopology.FormatSubscriptionName(subscriptionName);

            var topicDescription = Defaults.CreateTopicDescription(topicName);

            var subscriptionConfigurator = new SubscriptionConfigurator(topicDescription.Path, subscriptionName);

            callback?.Invoke(subscriptionConfigurator);

            var specification = new SubscriptionConsumeTopologySpecification(topicDescription, subscriptionConfigurator.GetSubscriptionDescription(),
                                                                             subscriptionConfigurator.Rule,
                                                                             subscriptionConfigurator.Filter);

            _specifications.Add(specification);
        }
コード例 #2
0
        SubscriptionEndpointSettings(TopicDescription topicDescription, SubscriptionConfigurator configurator)
            : base(configurator)
        {
            _topicDescription         = topicDescription;
            _subscriptionConfigurator = configurator;

            Name = Path = EntityNameFormatter.FormatSubscriptionPath(_subscriptionConfigurator.TopicPath, _subscriptionConfigurator.SubscriptionName);
        }
コード例 #3
0
        public SubscriptionEndpointSettings(TopicDescription topicDescription, string subscriptionName)
        {
            _topicDescription         = topicDescription;
            _subscriptionConfigurator = new SubscriptionConfigurator(topicDescription.Path, subscriptionName);

            Path = string.Join("/", _subscriptionConfigurator.TopicPath, _subscriptionConfigurator.SubscriptionName);

            MaxConcurrentCalls = Math.Max(Environment.ProcessorCount, 8);
            PrefetchCount      = Math.Max(MaxConcurrentCalls, 32);
        }
コード例 #4
0
        SubscriptionEndpointSettings(TopicDescription topicDescription, SubscriptionConfigurator configurator)
            : base(configurator)
        {
            _topicDescription         = topicDescription;
            _subscriptionConfigurator = configurator;

            Name = Path = EntityNameFormatter.FormatSubscriptionPath(_subscriptionConfigurator.TopicPath, _subscriptionConfigurator.SubscriptionName);

            MaxConcurrentCalls = Math.Max(Environment.ProcessorCount, 8);
            PrefetchCount      = Math.Max(MaxConcurrentCalls, 32);
        }
コード例 #5
0
        public SubscriptionEndpointSettings(TopicDescription topicDescription, string subscriptionName)
            : this(topicDescription, new SubscriptionConfigurator(topicDescription.Path, subscriptionName))
        {
            _topicDescription         = topicDescription;
            _subscriptionConfigurator = new SubscriptionConfigurator(topicDescription.Path, subscriptionName);

            Name = Path = EntityNameFormatter.FormatSubscriptionPath(_subscriptionConfigurator.TopicPath, _subscriptionConfigurator.SubscriptionName);

            MaxConcurrentCalls = Math.Max(Environment.ProcessorCount, 8);
            PrefetchCount      = Math.Max(MaxConcurrentCalls, 32);
        }
コード例 #6
0
        SubscriptionEndpointSettings(TopicDescription topicDescription, SubscriptionConfigurator configurator)
            : base(configurator)
        {
            _topicDescription         = topicDescription;
            _subscriptionConfigurator = configurator;

            Name = Path = EntityNameFormatter.FormatSubscriptionPath(_subscriptionConfigurator.TopicPath, _subscriptionConfigurator.SubscriptionName);

            MaxConcurrentCalls = Defaults.MaxConcurrentCalls;
            PrefetchCount      = Defaults.PrefetchCount;
        }
コード例 #7
0
        public SubscriptionEndpointSettings(TopicDescription topicDescription, string subscriptionName)
            : this(topicDescription, new SubscriptionConfigurator(topicDescription.Path, subscriptionName))
        {
            _topicDescription         = topicDescription;
            _subscriptionConfigurator = new SubscriptionConfigurator(topicDescription.Path, subscriptionName);

            Name = Path = EntityNameFormatter.FormatSubscriptionPath(_subscriptionConfigurator.TopicPath, _subscriptionConfigurator.SubscriptionName);

            MaxConcurrentCalls = Defaults.MaxConcurrentCalls;
            PrefetchCount      = Defaults.PrefetchCount;
        }
コード例 #8
0
        public void Subscribe(string subscriptionName, Action <ISubscriptionConfigurator> configure = null)
        {
            if (!IsBindableMessageType)
            {
                _specifications.Add(new InvalidServiceBusConsumeTopologySpecification(TypeMetadataCache <TMessage> .ShortName, "Is not a bindable message type"));
                return;
            }

            var topicDescription = _publishTopology.TopicDescription;

            var subscriptionConfigurator = new SubscriptionConfigurator(topicDescription.Path, subscriptionName);

            configure?.Invoke(subscriptionConfigurator);

            var specification = new SubscriptionConsumeTopologySpecification(topicDescription, subscriptionConfigurator.GetSubscriptionDescription());

            _specifications.Add(specification);
        }
コード例 #9
0
        public void Subscribe(string subscriptionName, Action <ISubscriptionConfigurator> configure = null)
        {
            if (string.IsNullOrWhiteSpace(subscriptionName))
            {
                throw new ArgumentException("Value cannot be null or whitespace.", nameof(subscriptionName));
            }

            if (!IsBindableMessageType)
            {
                _specifications.Add(new InvalidServiceBusConsumeTopologySpecification(TypeMetadataCache <TMessage> .ShortName, "Is not a bindable message type"));
                return;
            }

            var topicDescription = _publishTopology.TopicDescription;

            var subscriptionConfigurator = new SubscriptionConfigurator(topicDescription.Path, subscriptionName);

            configure?.Invoke(subscriptionConfigurator);

            var specification = new SubscriptionConsumeTopologySpecification(topicDescription, subscriptionConfigurator.GetSubscriptionDescription());

            _specifications.Add(specification);
        }