public ITopicClient Create(TopicOptions options)
        {
            var clientMock = new TopicClientMock(options.TopicName);

            _registeredClients.Add(clientMock);
            return(clientMock.Client);
        }
示例#2
0
 public FileTopicFactory(TopicFactoryOptions options)
 {
     directoryPath = options.DirectoryPath;
     topicOptions  = options.TopicOptions;
     persistentStorageFileLengthThreshold           = options.PersistentStorageFileLengthThreshold;
     subscriptionPointersStorageFileLengthThreshold = options.SubscriptionPointersStorageFileLengthThreshold;
 }
示例#3
0
 public TopicWrapper(
     TopicOptions options,
     ServiceBusOptions parentOptions,
     IServiceProvider provider)
     : base(parentOptions, provider, options.TopicName)
 {
     _options = options;
 }
        private void BuildAndRegisterTopic(TopicOptions options, ServiceBusOptions parentOptions)
        {
            var topic = new TopicWrapper(options, parentOptions, _provider);

            topic.Initialize();

            _registry.Register(topic);
        }
示例#5
0
        public TopicStream(string key, TopicOptions options)
        {
            this.Key = key;

            this.stream = !options.Capacity.HasValue
                ? Channel.CreateUnbounded <Message>()
                : Channel.CreateBounded <Message>(options.Capacity.Value);
        }
示例#6
0
        public ITopicClient Create(TopicOptions options)
        {
            if (options.Connection != null)
            {
                return(new TopicClient(options.Connection, options.TopicName, options.RetryPolicy));
            }

            if (options.ConnectionStringBuilder != null)
            {
                return(new TopicClient(options.ConnectionStringBuilder, options.RetryPolicy));
            }

            return(new TopicClient(options.ConnectionString, options.TopicName, options.RetryPolicy));
        }
示例#7
0
        public static void ConfigureServices(HostBuilderContext hostBuilder, IServiceCollection services)
        {
            services.AddScoped <IMain, Main>();

            var configuration = hostBuilder.Configuration;

            services.AddAzureServiceBus(
                ServiceBusNames.QueuesOnly,
                builder =>
            {
                var bagOptions = new QueueOptions();
                configuration.Bind($"AzureServiceBus:{ServiceBusNames.QueuesOnly}", bagOptions);

                builder.AddQueue <BagMessage>(bagOptions.Name);
                builder.AddConsumerHandler <BagMessage, BagMessageHandler>(bagOptions.Name);

                // automatically register consumers to be listening to the service bus.
                builder.RegisterConsumers();
            });

            services.AddAzureServiceBus(
                ServiceBusNames.TopicSubscriptions,
                builder =>
            {
                var dynOptions = new TopicOptions();
                configuration.Bind($"AzureServiceBus:{ServiceBusNames.TopicSubscriptions}", dynOptions);

                builder.AddTopic <DynamicMessage>(dynOptions.Name, dynOptions.SubscriptionName);

                // betbus, webhook-topic, create-order
                builder.AddConsumerHandler <DynamicMessageHandler>(dynOptions.MessageName, dynOptions.Name, dynOptions.SubscriptionName);

                // automatically register consumers to be listening to the service bus.
                builder.RegisterConsumers();
            });

            services.AddScoped <ProducerService>();
            services.AddScoped <ConsumerService>();
        }
示例#8
0
 internal Topic(string name, IPersistentStorage persistentStorage,
                ISubscriptionsConfigurationStorage subscriptionsConfigurationStorage,
                ISubscriptionPointersStorage subscriptionPointersStorage,
                TopicOptions topicOptions)
 {
     this.name = name;
     this.persistentStorage = persistentStorage;
     this.subscriptionsConfigurationStorage = subscriptionsConfigurationStorage;
     this.subscriptionPointersStorage       = subscriptionPointersStorage;
     persistenceIntervalMilliseconds        = topicOptions.PersistenceIntervalMilliseconds;
     persistenceMaxFails = topicOptions.PersistenceMaxFails;
     cleanupMaxFails     = topicOptions.CleanupMaxFails;
     subscriptionPointersFlushMaxFails = topicOptions.SubscriptionPointersFlushMaxFails;
     dataArrayOptions               = new InfiniteArrayOptions(topicOptions.DataArrayOptions);
     writers                        = new HashSet <TopicWriter>();
     subscriptions                  = new Dictionary <string, Subscription>();
     cancellationTokenSource        = new CancellationTokenSource();
     lastFreeToId                   = 1;
     stopping                       = false;
     persistenceFails               = 0;
     cleanupFails                   = 0;
     subscriptionPointersFlushFails = 0;
 }