コード例 #1
0
        public async Task SendAndReceiveFromAzureQueue()
        {
            var options = new AzureQueueOptions
            {
                ConnectionString         = TestDefaultConfiguration.DataConnectionString,
                MessageVisibilityTimeout = TimeSpan.FromSeconds(30),
                QueueNames = azureQueueNames
            };
            var serializationManager = this.fixture.Services.GetService <SerializationManager>();
            var clusterOptions       = this.fixture.Services.GetRequiredService <IOptions <ClusterOptions> >();
            var queueCacheOptions    = new SimpleQueueCacheOptions();
            var queueDataAdapter     = new AzureQueueDataAdapterV2(serializationManager);
            var adapterFactory       = new AzureQueueAdapterFactory(
                AZURE_QUEUE_STREAM_PROVIDER_NAME,
                options,
                queueCacheOptions,
                queueDataAdapter,
                this.fixture.Services,
                clusterOptions,
                serializationManager,
                loggerFactory);

            adapterFactory.Init();
            await SendAndReceiveFromQueueAdapter(adapterFactory);
        }
コード例 #2
0
        public KafkaAdapterFactory(
            string name,
            KafkaStreamOptions options,
            SimpleQueueCacheOptions cacheOptions,
            SerializationManager serializationManager,
            ILoggerFactory loggerFactory,
            IGrainFactory grainFactory
            )
        {
            _options = options ?? throw new ArgumentNullException(nameof(options));

            _name = name;
            _serializationManager = serializationManager;
            _loggerFactory        = loggerFactory;
            _grainFactory         = grainFactory;
            _logger = loggerFactory.CreateLogger <KafkaAdapterFactory>();

            if (options.Topics != null && options.Topics.Count == 0)
            {
                throw new ArgumentNullException(nameof(options.Topics));
            }

            _adapterCache = new SimpleQueueAdapterCache(
                cacheOptions,
                name,
                loggerFactory
                );

            _queueProperties   = GetQueuesProperties();
            _streamQueueMapper = new ExternalQueueMapper(_queueProperties.Values);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public KafkaAdapterFactory(
     string name,
     KafkaStreamOptions options,
     SimpleQueueCacheOptions cacheOptions,
     SerializationManager serializationManager,
     ILoggerFactory loggerFactory,
     IGrainFactory grainFactory
     ) : this(name, options, cacheOptions, serializationManager, loggerFactory, grainFactory, null)
 {
     if (options.Topics.Any(topic => topic.IsExternal))
     {
         throw new InvalidOperationException(
                   "Cannot have external topic with no 'IExternalDeserializer' defined. Use 'AddJson' or 'AddAvro'"
                   );
     }
 }
コード例 #5
0
 public AzureQueueAdapterFactory(
     string name,
     AzureQueueOptions options,
     SimpleQueueCacheOptions cacheOptions,
     IQueueDataAdapter <string, IBatchContainer> dataAdapter,
     IOptions <ClusterOptions> clusterOptions,
     ILoggerFactory loggerFactory)
 {
     this.providerName      = name;
     this.options           = options ?? throw new ArgumentNullException(nameof(options));
     this.dataAdapter       = dataAdapter ?? throw new ArgumentNullException(nameof(dataAdapter));;
     this.clusterOptions    = clusterOptions.Value;
     this.loggerFactory     = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
     this.streamQueueMapper = new AzureStreamQueueMapper(options.QueueNames, providerName);
     this.adapterCache      = new SimpleQueueAdapterCache(cacheOptions, this.providerName, this.loggerFactory);
 }
コード例 #6
0
 public ServiceBusAdapterFactory(
     ILoggerFactory loggerFactory,
     string name,
     ServiceBusOptions options,
     SimpleQueueCacheOptions cacheOptions,
     IOptions <ClusterOptions> clusterOptions,
     SerializationManager serializationManager)
 {
     _providerName        = name;
     _options             = options ?? throw new ArgumentNullException(nameof(options));
     _clusterOptions      = clusterOptions.Value;
     SerializationManager = serializationManager ?? throw new ArgumentNullException(nameof(serializationManager));
     _loggerFactory       = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
     _streamQueueMapper   = new ServiceBusStreamQueueMapper(options, $"{options.QueuePrefix}-{name}");
     _adapterCache        = new SimpleQueueAdapterCache(cacheOptions, _providerName, _loggerFactory);
 }
コード例 #7
0
 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);
 }
コード例 #8
0
 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);
 }
コード例 #9
0
 public TestAdapterFactory(
     string name,
     SimpleQueueCacheOptions cacheOptions,
     Func <IEnumerable <IBatchContainer> > queueMessagesProvider,
     Action <IEnumerable <IBatchContainer> > onMessagesDelivered,
     ILoggerFactory loggerFactory
     )
 {
     _providerName          = name;
     _queueMessagesProvider = queueMessagesProvider ?? throw new ArgumentNullException(nameof(queueMessagesProvider));
     _onMessagesDelivered   = onMessagesDelivered ?? throw new ArgumentNullException(nameof(onMessagesDelivered));
     _loggerFactory         = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
     _streamQueueMapper     = new HashRingBasedStreamQueueMapper(new HashRingStreamQueueMapperOptions()
     {
         TotalQueueCount = 1
     }, _providerName);
     _adapterCache = new SimpleQueueAdapterCache(cacheOptions, _providerName, _loggerFactory);
 }
コード例 #10
0
 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);
 }
コード例 #11
0
 public AzureQueueAdapterFactory(
     string name,
     AzureQueueOptions options,
     SimpleQueueCacheOptions cacheOptions,
     IServiceProvider serviceProvider,
     IOptions <ClusterOptions> clusterOptions,
     SerializationManager serializationManager,
     ILoggerFactory loggerFactory)
 {
     this.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));
     this.dataAadaptorFactory  = () => ActivatorUtilities.GetServiceOrCreateInstance <TDataAdapter>(serviceProvider);
     this.streamQueueMapper    = new AzureStreamQueueMapper(options.QueueNames, providerName);
     this.adapterCache         = new SimpleQueueAdapterCache(cacheOptions, this.providerName, this.loggerFactory);
 }
コード例 #12
0
 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);
 }
コード例 #13
0
        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);
        }
コード例 #14
0
        public KafkaAdapterFactory(
            string name,
            KafkaStreamOptions options,
            SimpleQueueCacheOptions cacheOptions,
            SerializationManager serializationManager,
            ILoggerFactory loggerFactory,
            IGrainFactory grainFactory,
            IExternalStreamDeserializer externalDeserializer
            )
        {
            _options = options ?? throw new ArgumentNullException(nameof(options));

            _name = name;
            _serializationManager = serializationManager;
            _loggerFactory        = loggerFactory;
            _grainFactory         = grainFactory;
            _externalDeserializer = externalDeserializer;
            _logger      = loggerFactory.CreateLogger <KafkaAdapterFactory>();
            _adminConfig = new AdminClientBuilder(options.ToAdminProperties());

            if (options.Topics != null && options.Topics.Count == 0)
            {
                throw new ArgumentNullException(nameof(options.Topics));
            }

            _adapterCache = new SimpleQueueAdapterCache(
                cacheOptions,
                name,
                loggerFactory
                );

            _queueProperties   = GetQueuesProperties().ToDictionary(q => q.QueueName);
            _streamQueueMapper = new ExternalQueueMapper(_queueProperties.Values);

            _config = _options.ToAdminProperties();
        }
コード例 #15
0
 public DefaultTopologyProvider(string providerName, IOptionsMonitor <RabbitMqOptions> optionsAccessor, IOptionsMonitor <SimpleQueueCacheOptions> cacheOptionsAccessor)
 {
     this.options      = optionsAccessor.Get(providerName);
     this.cacheOptions = cacheOptionsAccessor.Get(providerName);
 }
コード例 #16
0
 /// <summary>
 /// Adapter for simple queue caches
 /// </summary>
 /// <param name="options"></param>
 /// <param name="providerName"></param>
 /// <param name="loggerFactory"></param>
 public SimpleQueueAdapterCache(SimpleQueueCacheOptions options, string providerName, ILoggerFactory loggerFactory)
 {
     this.cacheSize     = options.CacheSize;
     this.loggerFactory = loggerFactory;
     this.providerName  = providerName;
 }
コード例 #17
0
        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);
        }