private static HashRingStreamQueueMapperOptions GetHashRingStreamQueueMapperOptions(List <string> azureQueueNames) { var options = new HashRingStreamQueueMapperOptions(); options.TotalQueueCount = azureQueueNames.Count; return(options); }
public IStreamQueueMapper GetStreamQueueMapper() { var options = new HashRingStreamQueueMapperOptions(); options.TotalQueueCount = 0; return(new HashRingBasedStreamQueueMapper(options, Name)); }
private Dictionary <SiloAddress, List <int> > GetQueueHistogram(Dictionary <SiloAddress, List <IRingRangeInternal> > siloRanges, int totalNumQueues) { var options = new HashRingStreamQueueMapperOptions(); options.TotalQueueCount = totalNumQueues; HashRingBasedStreamQueueMapper queueMapper = new HashRingBasedStreamQueueMapper(options, "AzureQueues"); _ = queueMapper.GetAllQueues(); Dictionary <SiloAddress, List <int> > queueHistogram = new Dictionary <SiloAddress, List <int> >(); foreach (var siloRange in siloRanges) { List <int> agentRanges = new List <int>(); foreach (IRingRangeInternal agentRange in siloRange.Value) { int numQueues = queueMapper.GetQueuesForRange(agentRange).Count(); agentRanges.Add(numQueues); } agentRanges.Sort(); queueHistogram.Add(siloRange.Key, agentRanges); } //queueHistogram.Sort((t1, t2) => t1.Item2.CompareTo(t2.Item2)); return(queueHistogram); }
public RabbitMQAdapterFactory( string name, RabbitMQStreamProviderOptions config, HashRingStreamQueueMapperOptions queueMapperOptions, SimpleQueueCacheOptions cacheOptions, IServiceProvider serviceProvider, IOptions <ClusterOptions> clusterOptions, SerializationManager serializationManager, ILoggerFactory loggerFactory, IMessageSerializationHandler serializationHandler, IRabbitMQMapper mapper) { _config = config; _providerName = name; _loggeFactory = loggerFactory; _serializationHandler = serializationHandler; _mapper = mapper; _mapper.Init( ); _cacheSize = cacheOptions.CacheSize; _adapterCache = new SimpleQueueAdapterCache(cacheOptions, _providerName, _loggeFactory); _streamQueueMapper = new HashRingBasedStreamQueueMapper(queueMapperOptions, _providerName); }
public virtual void Init() { this.receivers = new ConcurrentDictionary <QueueId, KafkaEventBusAdapterReceiver>(); this.telemetryProducer = this.serviceProvider.GetService <ITelemetryProducer>(); if (producer == null) { InitKafkaProducer(); } _adapterCache = new SimpleQueueAdapterCache(new SimpleQueueCacheOptions { CacheSize = cacheOptions.CacheSize }, Name, loggerFactory); if (this.StreamFailureHandlerFactory == null) { //TODO: Add a queue specific default failure handler with reasonable error reporting. this.StreamFailureHandlerFactory = partition => Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler()); } if (this.QueueMapperFactory == null) { var h = new HashRingStreamQueueMapperOptions { TotalQueueCount = receiverOptions.TotalQueueCount }; this.streamQueueMapper = new HashRingBasedStreamQueueMapper(h, Name); this.QueueMapperFactory = () => new HashRingBasedStreamQueueMapper(h, this.Name); } this.logger = this.loggerFactory.CreateLogger($"{this.GetType().FullName}"); // join topics? }
private static HashRingStreamQueueMapperOptions GetHashRingStreamQueueMapperOptions(string[] partitionIds) { var options = new HashRingStreamQueueMapperOptions(); options.TotalQueueCount = partitionIds.Length; return(options); }
public GeneratorAdapterFactory(string providerName, HashRingStreamQueueMapperOptions queueMapperOptions, StreamStatisticOptions statisticOptions, IServiceProvider serviceProvider, SerializationManager serializationManager, ITelemetryProducer telemetryProducer, ILoggerFactory loggerFactory) { this.Name = providerName; this.queueMapperOptions = queueMapperOptions ?? throw new ArgumentNullException(nameof(queueMapperOptions)); this.statisticOptions = statisticOptions ?? throw new ArgumentNullException(nameof(statisticOptions)); this.serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); this.serializationManager = serializationManager ?? throw new ArgumentNullException(nameof(serializationManager)); this.telemetryProducer = telemetryProducer ?? throw new ArgumentNullException(nameof(telemetryProducer)); this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); this.logger = loggerFactory.CreateLogger <GeneratorAdapterFactory>(); }
public MemoryAdapterFactory(string providerName, StreamCacheEvictionOptions cacheOptions, StreamStatisticOptions statisticOptions, HashRingStreamQueueMapperOptions queueMapperOptions, IServiceProvider serviceProvider, IGrainFactory grainFactory, ITelemetryProducer telemetryProducer, ILoggerFactory loggerFactory) { this.Name = providerName; this.queueMapperOptions = queueMapperOptions ?? throw new ArgumentNullException(nameof(queueMapperOptions)); this.cacheOptions = cacheOptions ?? throw new ArgumentNullException(nameof(cacheOptions)); this.statisticOptions = statisticOptions ?? throw new ArgumentException(nameof(statisticOptions)); this.grainFactory = grainFactory ?? throw new ArgumentNullException(nameof(grainFactory)); this.telemetryProducer = telemetryProducer ?? throw new ArgumentNullException(nameof(telemetryProducer)); this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); this.logger = loggerFactory.CreateLogger <ILogger <MemoryAdapterFactory <TSerializer> > >(); this.serializer = MemoryMessageBodySerializerFactory <TSerializer> .GetOrCreateSerializer(serviceProvider); }
public PubSubAdapterFactory( string name, PubSubOptions options, HashRingStreamQueueMapperOptions queueMapperOptions, SimpleQueueCacheOptions cacheOptions, IServiceProvider serviceProvider, IOptions <ClusterOptions> clusterOptions, ILoggerFactory loggerFactory) { this._providerName = name; this.options = options; this.clusterOptions = clusterOptions.Value; this.loggerFactory = loggerFactory; this._adaptorFactory = () => ActivatorUtilities.GetServiceOrCreateInstance <TDataAdapter>(serviceProvider); this._streamQueueMapper = new HashRingBasedStreamQueueMapper(queueMapperOptions, this._providerName); this._adapterCache = new SimpleQueueAdapterCache(cacheOptions, this._providerName, loggerFactory); }
public SQSAdapterFactory( string name, SqsOptions sqsOptions, HashRingStreamQueueMapperOptions queueMapperOptions, SimpleQueueCacheOptions cacheOptions, IOptions <ClusterOptions> clusterOptions, Orleans.Serialization.Serializer serializer, ILoggerFactory loggerFactory) { this.providerName = name; this.sqsOptions = sqsOptions; this.clusterOptions = clusterOptions.Value; this.serializer = serializer.GetSerializer <SQSBatchContainer>(); this.loggerFactory = loggerFactory; streamQueueMapper = new HashRingBasedStreamQueueMapper(queueMapperOptions, this.providerName); adapterCache = new SimpleQueueAdapterCache(cacheOptions, this.providerName, this.loggerFactory); }
private IStreamQueueMapper Create(string providerName) { var mapper = serviceProvider.GetServiceByName <IStreamQueueMapper>(providerName); if (mapper != null) { return(mapper); } // Default var rmqOptions = serviceProvider.GetOptionsByName <RabbitMqOptions>(providerName); var mapperOptions = new HashRingStreamQueueMapperOptions { TotalQueueCount = rmqOptions.UseQueuePartitioning ? rmqOptions.NumberOfQueues : 1 }; return(new HashRingBasedStreamQueueMapper(mapperOptions, rmqOptions.QueueNamePrefix)); }
public EventStoreAdapterFactory(string providerName, IEventStoreStreamProviderConfiguration streamProviderConfiguration, ILoggerFactory loggerFactory) { _streamProviderConfiguration = streamProviderConfiguration; _loggerFactory = loggerFactory; _providerName = providerName; _receivers = new ConcurrentDictionary <QueueId, EventStoreQueueAdapterReceiver>(); _eventStoreQueueAdapterCache = new EventStoreQueueAdapterCache(this, loggerFactory); var hashRingStreamQueueMapperOptions = new HashRingStreamQueueMapperOptions() { TotalQueueCount = 2 }; _streamQueueMapper = new HashRingBasedStreamQueueMapper(hashRingStreamQueueMapperOptions, _providerName); }
public SQSAdapterFactory( string name, SqsOptions sqsOptions, HashRingStreamQueueMapperOptions queueMapperOptions, SimpleQueueCacheOptions cacheOptions, IServiceProvider serviceProvider, IOptions <ClusterOptions> clusterOptions, SerializationManager serializationManager, ILoggerFactory loggerFactory) { this.providerName = name; this.sqsOptions = sqsOptions; this.clusterOptions = clusterOptions.Value; this.serializationManager = serializationManager; this.loggerFactory = loggerFactory; streamQueueMapper = new HashRingBasedStreamQueueMapper(queueMapperOptions, this.providerName); adapterCache = new SimpleQueueAdapterCache(cacheOptions, this.providerName, this.loggerFactory); }
public RabbitMQAdapterFactory( string name, RabbitMQStreamProviderOptions options, HashRingStreamQueueMapperOptions queueMapperOptions, SimpleQueueCacheOptions cacheOptions, IServiceProvider serviceProvider, IOptions <ClusterOptions> clusterOptions, SerializationManager serializationManager, ILoggerFactory loggerFactory) { providerName = name; this.options = options ?? throw new ArgumentNullException(nameof(options)); this.clusterOptions = clusterOptions.Value; //this.SerializationManager = serializationManager ?? throw new ArgumentNullException(nameof(serializationManager)); this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); streamQueueMapper = new HashRingBasedStreamQueueMapper(queueMapperOptions, providerName); adapterCache = new SimpleQueueAdapterCache(cacheOptions, providerName, this.loggerFactory); mapper = ActivatorUtilities.GetServiceOrCreateInstance <TMapper>(serviceProvider); }
public RabbitMQAdapterFactory( string providerName, RabbitMQOptions rmqOptions, CachingOptions cachingOptions, IServiceProvider serviceProvider, ILoggerFactory loggerFactory) { if (string.IsNullOrEmpty(providerName)) { throw new ArgumentNullException(nameof(providerName)); } if (rmqOptions == null) { throw new ArgumentNullException(nameof(rmqOptions)); } if (cachingOptions == null) { throw new ArgumentNullException(nameof(cachingOptions)); } if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } _cache = new ConcurrentQueueAdapterCache(cachingOptions.CacheSize); var queueMapperOptions = new HashRingStreamQueueMapperOptions() { TotalQueueCount = rmqOptions.NumberOfQueues }; _mapper = new HashRingBasedStreamQueueMapper(queueMapperOptions, rmqOptions.QueueNamePrefix); _failureHandler = Task.FromResult <IStreamFailureHandler>(new NoOpStreamDeliveryFailureHandler(false)); var serializer = new DefaultBatchContainerSerializer(serviceProvider.GetRequiredService <SerializationManager>()); _adapter = new RabbitMQAdapter(rmqOptions, cachingOptions, serializer, _mapper, providerName, loggerFactory); }
public EventStoreAdapterFactory(string providerName, EventStoreRepositoryConfiguration eventStoreRepositoryConfiguration, ILoggerFactory loggerFactory) { _loggerFactory = loggerFactory; _providerName = providerName; _eventStoreRepositoryConfiguration = eventStoreRepositoryConfiguration; var options = new SimpleQueueCacheOptions() { CacheSize = 100 }; _eventStoreQueueAdapterCache = new SimpleQueueAdapterCache(options, _providerName, _loggerFactory); var hashRingStreamQueueMapperOptions = new HashRingStreamQueueMapperOptions() { TotalQueueCount = 1 }; _streamQueueMapper = new HashRingBasedStreamQueueMapper(hashRingStreamQueueMapperOptions, _providerName); }
public HashRingBasedStreamQueueMapper(HashRingStreamQueueMapperOptions options, string queueNamePrefix) { numQueues = options.TotalQueueCount; var queueIds = new List <QueueId>(numQueues); if (numQueues == 1) { uint uniformHashCode = 0; queueIds.Add(QueueId.GetQueueId(queueNamePrefix, 0, uniformHashCode)); } else { uint portion = checked ((uint)(RangeFactory.RING_SIZE / numQueues + 1)); for (uint i = 0; i < numQueues; i++) { uint uniformHashCode = checked (portion * i); queueIds.Add(QueueId.GetQueueId(queueNamePrefix, i, uniformHashCode)); } } this.hashRing = new HashRing <QueueId>(queueIds); }
public RedisQueueAdapterFactory( string name, RedisStreamOptions options, IConnectionMultiplexerFactory connectionMultiplexerFactory, HashRingStreamQueueMapperOptions queueMapperOptions, SimpleQueueCacheOptions cacheOptions, IServiceProvider serviceProvider, IOptions <ClusterOptions> clusterOptions, IRedisDataAdapter dataAdapter, ILogger logger, ISerializationManager serializationManager) { if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException(nameof(name)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } if (connectionMultiplexerFactory == null) { throw new ArgumentNullException(nameof(connectionMultiplexerFactory)); } if (queueMapperOptions == null) { throw new ArgumentNullException(nameof(queueMapperOptions)); } if (cacheOptions == null) { throw new ArgumentNullException(nameof(cacheOptions)); } if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } if (clusterOptions == null) { throw new ArgumentNullException(nameof(clusterOptions)); } if (dataAdapter == null) { throw new ArgumentNullException(nameof(dataAdapter)); } if (serializationManager == null) { throw new ArgumentNullException(nameof(serializationManager)); } _providerName = name; _options = options; _connectionMultiplexerFactory = connectionMultiplexerFactory; _clusterOptions = clusterOptions.Value; _logger = logger.ForContext <RedisQueueAdapterFactory>(); _dataAdapter = dataAdapter; _streamQueueMapper = new HashRingBasedStreamQueueMapper(queueMapperOptions, _providerName); var microsoftLoggerFactory = serviceProvider.GetService <Microsoft.Extensions.Logging.ILoggerFactory>(); _adapterCache = new SimpleQueueAdapterCache(cacheOptions, _providerName, microsoftLoggerFactory); }