Exemplo n.º 1
0
        public async Task Create(ITopicConfiguration topicConfig)
        {
            if (!_adminClient.Value.TopicExists(topicConfig.Name, out _))
            {
                TopicSpecification topicSpecification = new TopicSpecification
                {
                    Name              = topicConfig.Name,
                    NumPartitions     = topicConfig.Partitions,
                    ReplicationFactor = topicConfig.ReplicationFactor,
                    Configs           = new Dictionary <string, string>
                    {
                        { "retention.ms", topicConfig.RetentionMs.ToString() }
                    }
                };

                try
                {
                    await _adminClient.Value.CreateTopicsAsync(new[] { topicSpecification });

                    _log.Information($"{topicConfig.Name} created.");
                }
                catch (CreateTopicsException ex)
                {
                    _log.Error(ex, "An unexpected exception occurred when creating topics.");
                }

                _adminClient.Value.EnsureTopicCreation(topicConfig.Name);
            }
        }
Exemplo n.º 2
0
        public async Task Create(ITopicConfiguration topicConfig)
        {
            if (!_adminClient.TopicExists(topicConfig.Name, out _))
            {
                TopicSpecification topicSpecification = new TopicSpecification
                {
                    Name              = topicConfig.Name,
                    NumPartitions     = topicConfig.Partitions,
                    ReplicationFactor = topicConfig.ReplicationFactor,
                    Configs           = new Dictionary <string, string>
                    {
                        { "retention.ms", topicConfig.RetentionMs.ToString() }
                    }
                };

                try
                {
                    await _adminClient.CreateTopicsAsync(new[] { topicSpecification });
                }
                catch (CreateTopicsException ex)
                {
                    Console.WriteLine(ex);
                }

                _adminClient.EnsureTopicCreation(topicConfig.Name);
            }
        }
 public EasMessageFactory(
     ILogger logger,
     IFileUploadJobManager fileUploadMetaDataManager,
     [KeyFilter(JobType.EasSubmission)] ITopicConfiguration topicConfiguration,
     IJobTopicTaskService jobTopicTaskService)
     : base(logger, fileUploadMetaDataManager, topicConfiguration, jobTopicTaskService)
 {
 }
 public ReferenceDataMessageFactory(
     ILogger logger,
     IFileUploadJobManager fileUploadMetaDataManager,
     [KeyFilter(JobType.ReferenceDataFCS)]
     ITopicConfiguration topicConfiguration,
     IJobTopicTaskService jobTopicTaskService)
     : base(logger, fileUploadMetaDataManager, topicConfiguration, jobTopicTaskService)
 {
 }
 protected AbstractFileUploadMessageFactory(
     ILogger logger,
     IFileUploadJobManager fileUploadMetaDataManager,
     ITopicConfiguration topicConfiguration,
     IJobTopicTaskService jobTopicTaskService)
 {
     _logger = logger;
     _fileUploadJobManager = fileUploadMetaDataManager;
     _topicConfiguration   = topicConfiguration;
     _jobTopicTaskService  = jobTopicTaskService;
 }
Exemplo n.º 6
0
        /// <summary>
        /// Creates the topic if not exists.
        /// </summary>
        /// <typeparam name="T">type of the message</typeparam>
        /// <returns>The topic name</returns>
        private string CreateTopicIfNotExists <T>(ITopicConfiguration configuration)
        {
            string topicName = configuration.GetTopicName(typeof(T));

            if (!this.namespaceManager.TopicExists(topicName))
            {
                TopicDescription topicDescription = new TopicDescription(topicName)
                {
                    RequiresDuplicateDetection          = configuration.RequiresDuplicateDetection,
                    DuplicateDetectionHistoryTimeWindow = configuration.DuplicateDetectionHistoryTimeWindow
                };

                this.namespaceManager.CreateTopic(topicDescription);
                this.Configuration.Logger.InfoFormat("Topic with name {0} was created.", topicName);
            }

            return(topicName);
        }
Exemplo n.º 7
0
        /// <summary>
        /// NOTE: If creating the topic within ASB there is currently no way to configure the Topic using this class.
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="topicName"></param>
        /// <param name="createIfNeeded">Provision the Topic within ASB if needed.</param>
        public Topic(ITopicConfiguration configuration, ISerializationUtility serializationUtility)
        {
            var config = configuration as TopicConfiguration;

            if (config == null)
            {
                throw new ArgumentOutOfRangeException($"The type {nameof(TopicConfiguration)} is expected");
            }

            ConnectionString = config.ConnectionString;
            Name             = config.Name;

            if (config.CreateIfNeeded)
            {
                Create(config);
            }

            //var builder = new ServiceBusConnectionStringBuilder(ConnectionString);
            //_topicClient = new TopicClient(builder);
            _topicClient = new TopicClient(ConnectionString, Name);

            _serializationUtility = serializationUtility;
        }
Exemplo n.º 8
0
 public static T WithTopicByMessageNamespace <T>(this ITopicConfiguration <T> configuration) where T : class, ITopicConfiguration
 {
     return(configuration.WithTopicName((t) => { return t.Namespace.ToLowerInvariant(); }));
 }
Exemplo n.º 9
0
 public static T WithTopicByMessageNamespace <T>(this ITopicConfiguration <T> configuration, string prefix) where T : class, ITopicConfiguration
 {
     return(configuration.WithTopicName((t) => { return string.Format("{0}/{1}", prefix, t.Namespace.ToLowerInvariant()); }));
 }
Exemplo n.º 10
0
 public Task Create(ITopicConfiguration topicConfig)
 {
     return(Task.CompletedTask);
 }
Exemplo n.º 11
0
        //----==== PRIVATE ====--------------------------------------------------------------------

        /// <summary>
        /// Creates the topic if it doesn't already exist.
        /// NOTE: There is no need to delete this resource, because other services may be using this topic.  The "auto delete" will take care of that.
        /// </summary>
        private async void Create(ITopicConfiguration config)
        {
            // Once this is created, it could be deleted at some point even if THIS object is still around.
        }